ひとめで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);
