Javaクエリ仕様策定中③
Javaでのデータ検索における仕様を考えているのだがこのような書き方はどうだろう。
誰か意見下さい。
現在のところの仕様③:
メリット:
・タイプセーフに記述できる。
・準備するのはEntity Beanのみでよい。
・ID列を意識しなくてよい。
デメリット:
・パブリックフィールドは使用できない。
・DIコンテナからEntityを生成・取得できない。
検索パターン1(通常検索)
Expression e = new Expression(); //式マネージャ Shop_list s = e.createQuery(Shop_list.class); //条件の設定(オフィスコオードが100で削除フラグが1のデータを検索) s.setOffice_cd("100"); //1 s.setDelete_flag("1"); // or // e.equal(s.getOffice_cd()).to("100"); //2 e.equal(s.getDelete_flag()).to("1"); // or // e.equal(s.getOffice_cd(),"100"); //3 e.equal(s.getDelete_flag(),"1"); //データの検索(検討中) List<Shop_list> sl = e.getList();
標準検索パターン2(関数を使用した検索)
Expression e = new Expression(); //式マネージャ Shop_list s = e.createQuery(Shop_list.class); //条件の設定(オフィスコードが100で削除フラグが1か2のデータを検索) s.setOffice_cd("100"); //1 // or // e.equal(s.getOffice_cd()).to("100"); //2 // or // e.equal(s.getOffice_cd(),"100"); //3 e.value(s.getDelete_flag()).in("1","2"); //4 // or // e.$(s.getDelete_flag()).in("1","2"); //5 //データの検索(検討中) List<Shop_list> sl = e.getList();
標準検索パターン3(関数を使用した検索 ORDER BY)
Expression e = new Expression(); //式マネージャ Shop_list s = e.createQuery(Shop_list.class); //ORDER BY 1 e.asc(s.getDelete_flag(),s.getOffice_cd()) .desc(s.getShop_code()) .asc(s.getPrefecture_code()); //ORDER BY 2 e.asc(s.getDelete_flag()); e.asc(s.getOffice_cd()); e.desc(s.getShop_code()); e.asc(s.getPrefecture_code()); //データの検索(検討中) List<Shop_list> sl = e.getList();
標準検索パターン4(他のオブジェクトと関連したデータの取得)
Expression e = new Expression(); //式マネージャ Shop_list s = e.createQuery(Shop_list.class); //クエリの作成 Office_list o = e.createInnerRelation(Office_list.class);//リレーションの作成(INNER JOIN) //Office_list o = e.createOuterRelation(Office_list.class);//リレーションの作成(OUTER LEFT JOIN) //バインド e.bind(s.getDelete_flag()).to(o.getDelete_flag()); //データの検索(Shop_listの属性にOffice_listがあればセットされる) List<Shop_list> sl = e.getList();
標準検索パターン5(件数の取得)
Expression e = new Expression(); //式マネージャ Shop_list s = e.createQuery(Shop_list.class); //条件の設定(オフィスコオードが100で削除フラグが1のデータを検索) s.setOffice_cd("100"); //1 s.setDelete_flag("1"); // or // e.equal(s.getOffice_cd()).to("100"); //2 e.equal(s.getDelete_flag()).to("1"); // or // e.equal(s.getOffice_cd(),"100"); //3 e.equal(s.getDelete_flag(),"1"); //データの検索(検討中) Long sl = e.getCount();
標準更新パターン 1
Expression e = new Expression(); //式マネージャ Shop_list s = e.createQuery(Shop_list.class); //条件の設定(オフィスコオードが100で削除フラグが1のデータを検索) s.setOffice_cd("100"); //1 s.setDelete_flag("1"); // or // e.equal(s.getOffice_cd()).to("100"); //2 e.equal(s.getDelete_flag()).to("1"); // or // e.equal(s.getOffice_cd(),"100"); //3 e.equal(s.getDelete_flag(),"1"); //データの設定(先に条件を完成させた後に呼び出す必要がある。) e.edit(); s.setShop_name("name"); s.setDelete_flag("0"); //データの保存 e.save();
標準更新パターン 2
Expression e = new Expression(); //式マネージャ Shop_list s = e.createQuery(Shop_list.class); //条件の設定(オフィスコオードが100で削除フラグが1のデータを検索) //※ 記述できない s.setOffice_cd("100"); //※ 記述できない s.setDelete_flag("1"); e.equal(s.getOffice_cd()).to("100"); //1 e.equal(s.getDelete_flag()).to("1"); // or // e.equal(s.getOffice_cd(),"100"); //2 e.equal(s.getDelete_flag(),"1"); //データの設定 s.setShop_name("name"); s.setDelete_flag("0"); //データの保存 e.save();
登録パターン
Expression e = new Expression(); //式マネージャ Shop_list s = e.createQuery(Shop_list.class); //データの設定 s.setOffice_cd("100"); s.setShop_name("name"); s.setDelete_flag("0"); //データの作成 e.create();