ひとめでDBFlute
ひとめでパッとDBFluteを探るまとめページです。(ここからリンクが辿れます)
入り口ページ
チュートリアル (とにかくここから)
- アーキテクト向け
- アーキテクトのためのチュートリアル
- ディベロッパー向け
- ディベロッパーのためのチュートリアル
DBFluteハンズオン (厳しい修行)
- ハンズオン形式で修行
- DBFluteハンズオン
DBFluteタスク
DBFluteタスクの一覧
- JDBCタスク
- 実際のデータベースからスキーマ情報を取得
- Docタスク
- スキーマ情報からドキュメントを自動生成
- Generateタスク
- スキーマ情報からクラスを自動生成
- Sql2Entityタスク
- 外だしSQL(OutsideSql)からクラスを自動生成
- OutsideSqlTestタスク
- 外だしSQL(OutsideSql)を一括実行してテスト
- ReplaceSchemaタスク
- スキーマを再構築(初期化・作成・データ登録・整合性チェック)
- Manageタスク
- 管理用のサブタスク (Renewal, Regenerate など) を実行できる
e.g. Sql2Entityの実行ファイル (バッチファイル) @Directory
dbflute_xxxdb // ここをDBFluteクライアントと呼びます
|-dfprop // DBFluteプロパティの置き場所 (設定ファイルたち)
|-log
|-...
|-playsql // ReplaceSchemaのリソースの置き場
|-...
|-sql2entity.bat
|-sql2entity.sh
|-...
DBFluteタスク実行タイミング
- ドキュメント自動生成なら
- JDBC, Doc
- Entityクラス自動生成なら
- JDBC, Generate
- 外だしSQLのクラス自動生成なら
- Sql2Entity
- DBスキーマを構築するなら
- ReplaceSchema
- いろいろ一括実行するなら
- Manage の Renewal or Regenerate
ConditionBean
ConditionBeanの情報ページ
- トップページ
- ConditionBean *ここがすべて
- ひとめで
- ひとめでConditionBean *お手軽リファレンス
ConditionBeanの実装Example
e.g. 基点テーブルは "会員" @Java
// 1. 基点テーブルのConditionBeanを生成 (基点テーブル何か?)
// {select句, from句}
MemberCB cb = new MemberCB();
// 2. 取得したい関連テーブルを指定 (取得したい関連テーブルは何か?)
// {select句, join句}
cb.setupSelect_MemberStatus();
// 3. 絞り込み条件・並び替え条件を設定 (どんな絞り込み、並び替えをしたいか?)
// {where句, order-by句, (from句, on句)}
cb.query().setMemberName_PrefixSearch("S");
cb.query().addOrderBy_Birthdate_Desc();
cb.query().addOrderBy_MemberId_Asc();
// 4. Behaviorのメソッドを呼ぶ (一件検索なのか?リスト検索なのか?)
// {一件検索?リスト検索?ページング検索?}
List<Member> memberList = memberBhv.selectList(cb);
// あとは、検索結果をお好きなように
for (Member member : memberList) {
String memberName = member.getMemberName();
Date birthdate = member.getBirthdate();
String statusName = member.getMemberStatus().getMemberStatusName();
...
}
外だしSQL (OutsideSql)
外だしSQLの情報ページ
- トップページ
- 外だしSQL(OutsideSql) *2Way-SQL
- 使い方
- 外だしSQLの使い方 *とにかく実装したいなら
- 外だしで使うタスク
- Sql2Entityタスク *SQL対応Entityの自動生成
外だしSQLの実装の流れ
-
外だしSQLを パラメータコメント を使って
2Way-SQL で書く
-
Sql2Entity を実行して
CustomizeEntity と
ParameterBean を自動生成
- Behaviorの outsideSql() メソッドから実行
外だしSQLの実装Example (2Way-SQL)
e.g. 2Way-SQLでの実装 (CustomizeEntity と ParameterBean を利用) @OutsideSql
/*
[df:title]
単なるシンプルな会員検索
[df:description]
これはDBFluteドキュメント上のExampleであり、
正直、このくらいなら ConditionBean で実装してしまうだろう。
*/
-- #df:entity#
-- !df:pmb!
-- !!AutoDetect!!
select mb.MEMBER_ID
, mb.MEMBER_NAME
, stat.MEMBER_STATUS_NAME
from MEMBER mb
left outer join MEMBER_STATUS stat
on mb.MEMBER_STATUS_CODE = stat.MEMBER_STATUS_CODE
/*BEGIN*/
where
/*IF pmb.memberId != null*/
mb.MEMBER_ID = /*pmb.memberId*/3
/*END*/
/*IF pmb.memberName != null*/
and mb.MEMBER_NAME like /*pmb.memberName*/'M%'
/*END*/
/*END*/
order by mb.BIRTHDATE desc, mb.MEMBER_ID asc
- #df:entity#
- SQL対応のEntityを自動生成するというマーク
- !df:pmb!
- SQLに渡すパラメーターを詰めるBeanを自動生成するというマーク
- !!AutoDetect!!
SQLに渡すパラメーターのプロパティを自動判別するというマーク
外だしSQLの呼び出し (Javaから)
e.g. リスト検索 (TypedParameterBean) {名前が 'S' で始まる会員を検索}@Java
SimpleMemberPmb pmb = new SimpleMemberPmb();
pmb.setMemberName_PrefixSearch("S");
// 外だしSQLの実行 (MemberBhv_selectSimpleMember.sql)
List<SimpleMember> memberList
= memberBhv.outsideSql().selectList(pmb);
dbflute_xxxdb // ここをDBFluteクライアントと呼びます
|-dfprop // DBFluteプロパティの置き場所 (設定ファイルたち)
|-log
|-...
|-playsql // ReplaceSchemaのリソースの置き場
|-...
|-sql2entity.bat
|-sql2entity.sh
|-...
// 1. 基点テーブルのConditionBeanを生成 (基点テーブル何か?)
// {select句, from句}
MemberCB cb = new MemberCB();
// 2. 取得したい関連テーブルを指定 (取得したい関連テーブルは何か?)
// {select句, join句}
cb.setupSelect_MemberStatus();
// 3. 絞り込み条件・並び替え条件を設定 (どんな絞り込み、並び替えをしたいか?)
// {where句, order-by句, (from句, on句)}
cb.query().setMemberName_PrefixSearch("S");
cb.query().addOrderBy_Birthdate_Desc();
cb.query().addOrderBy_MemberId_Asc();
// 4. Behaviorのメソッドを呼ぶ (一件検索なのか?リスト検索なのか?)
// {一件検索?リスト検索?ページング検索?}
List<Member> memberList = memberBhv.selectList(cb);
// あとは、検索結果をお好きなように
for (Member member : memberList) {
String memberName = member.getMemberName();
Date birthdate = member.getBirthdate();
String statusName = member.getMemberStatus().getMemberStatusName();
...
}
/*
[df:title]
単なるシンプルな会員検索
[df:description]
これはDBFluteドキュメント上のExampleであり、
正直、このくらいなら ConditionBean で実装してしまうだろう。
*/
-- #df:entity#
-- !df:pmb!
-- !!AutoDetect!!
select mb.MEMBER_ID
, mb.MEMBER_NAME
, stat.MEMBER_STATUS_NAME
from MEMBER mb
left outer join MEMBER_STATUS stat
on mb.MEMBER_STATUS_CODE = stat.MEMBER_STATUS_CODE
/*BEGIN*/
where
/*IF pmb.memberId != null*/
mb.MEMBER_ID = /*pmb.memberId*/3
/*END*/
/*IF pmb.memberName != null*/
and mb.MEMBER_NAME like /*pmb.memberName*/'M%'
/*END*/
/*END*/
order by mb.BIRTHDATE desc, mb.MEMBER_ID asc
SimpleMemberPmb pmb = new SimpleMemberPmb();
pmb.setMemberName_PrefixSearch("S");
// 外だしSQLの実行 (MemberBhv_selectSimpleMember.sql)
List<SimpleMember> memberList
= memberBhv.outsideSql().selectList(pmb);