Javaクエリの仕様策定中②
Javaでのデータ検索における仕様を考えているのだがこのような書き方はどうだろう。
誰か意見下さい。
現在のところの仕様②:
メリット:
・タイプセーフに記述できる。
・準備するのはEntity Beanのみでよい。
・ID列を意識しなくてよい。
デメリット:
・パブリックフィールドは使用できない。
・DIコンテナからEntityを生成・取得できない。
こう書くと
final Expression e = new Expression(); //式マネージャ final Shop_list s = e.createSearchCondition(Shop_list.class); //primary_table final Office_list o = e.createRelation(Office_list.class); //joined_table s.setOffice_cd("100"); e.$(s.getDelete_flag()).in("1","2"); //or ブロックパート1 e.new OrBlock(){{ e.$(s.getShop_code()).range(100, 300); e.$(s.getOffice_cd()).includewith("ターゲット"); }}.end(); // or ブロックパート2 e.or_block_begin(); e.$(s.getShop_code()).range(100, 300); e.$(s.getOffice_cd()).includewith("ターゲット"); e.block_end(); // where clause の joined table とのバインド パート1 e.equal(s.getDelete_flag(), o.getDelete_flag()); // where clause の joined table とのバインド パート2 s.getDelete_flag(); e.equal(); o.getDelete_flag(); //joined tableとのバインド join on〜 e.$(s.getDelete_flag()).bind(o.getDelete_flag()); //joined tableとのヴァリューバインド e.$(o.getOffice_cd()).bindValue("100");
結果:
こうなる
Shop_list.Office_cd = 100 AND Shop_list.Delete_flag IN ( 1 , 2 ) OR ( Shop_list.Shop_code BETWEEN 100 AND 100 AND Shop_list.Office_cd '%ターゲット%' ) OR ( Shop_list.Shop_code BETWEEN 100 AND 100 AND Shop_list.Office_cd '%ターゲット%' ) AND Shop_list.Delete_flag = Office_list.Delete_flag AND Shop_list.Delete_flag = Office_list.Delete_flag
JOIN条件部分
Shop_list.Delete_flag = Office_list.Delete_flag AND Office_list.Delete_flag = '100'