ライブラリを使用したデータアクセスAPI、処理カスタマイズAPIの検索条件の指定方法について説明します。
検索条件を指定するときは以下のクラスを使用します。
検索条件を指定する際はまず、SearchConditionを格納するListを作成してください。
// A=1
List<SearchCondition> query = new ArrayList<>();
SearchCondition.Equals equals = new SearchCondition.Equals("A","1");
query.add(equals);
Listに複数のSearchConditionを格納することで複数条件を指定することができます。
特に明示せずにListに追加した場合は、AND条件となります。
// A=1 AND B=1
List<SearchCondition> query = new ArrayList<>();
SearchCondition.Equals equals1 = new SearchCondition.Equals("A","1");
SearchCondition.Equals equals2 = new SearchCondition.Equals("B","1");
query.add(equals1);
query.add(equals2);
また以下のように明示的にAND条件とOR条件を使い分けることができます
List<SearchCondition> query = new ArrayList<>();
SearchCondition.Equals equals1 = new SearchCondition.Equals("A","1");
SearchCondition.Equals equals2 = new SearchCondition.Equals("B","1");
SearchCondition.Equals equals3 = new SearchCondition.Equals("C","1");
// AND条件の指定
// B=1 AND C=1
SearchCondition.And and = new SearchCondition.And();
and.addOperand(equals2);
and.addOperand(equals3);
// OR条件の指定
// A=1 OR (B=1 AND C=1)
SearchCondition.Or or = new SearchCondition.Or();
or.addOperand(equals1);
or.addOperand(and);
query.add(or);
SearchCondition.Notを用いることでNOT条件に格納されます。
List<SearchCondition> query = new ArrayList<>();
SearchCondition.Equals equals1 = new SearchCondition.Equals("A","1");
SearchCondition.Equals equals2 = new SearchCondition.Equals("B","1");
// NOT条件の指定
// NOT (A=1 AND B=1)
SearchCondition.Not not = new SearchCondition.Not();
not.addOperand(equals1);
not.addOperand(equals2);
query.add(not);
AND条件、OR条件と組み合わせた場合の例。
List<SearchCondition> query = new ArrayList<>();
SearchCondition.Equals equals1 = new SearchCondition.Equals("A","1");
SearchCondition.Equals equals2 = new SearchCondition.Equals("B","1");
SearchCondition.Equals equals3 = new SearchCondition.Equals("C","1");
// AND条件の指定
// B=1 AND C=1
SearchCondition.And and = new SearchCondition.And();
and.addOperand(equals2);
and.addOperand(equals3);
// NOT条件の指定
// NOT (A=1)
SearchCondition.Not not = new SearchCondition.Not();
not.addOperand(equals1);
// OR 条件の指定
// NOT (A=1) OR ( B=1 AND C=1)
SearchCondition.Or or = new SearchCondition.Or();
or.addOperand(not);
or.addOperand(and);
query.add(or);
日付の比較を行う場合、SearchCondition.to_char_formatでフォーマットを指定します。
List<SearchCondition> query = new ArrayList<>();
String date = "2017/01/01";
// カラムの値が指定された値以上か判定します。
SearchCondition.MoreThanEquals mte = new SearchCondition.MoreThanEquals("A", date);
// 比較フォーマットの指定(YYYY/MM/DD)
// to_char(A, 'YYYY/MM/DD') >= '2017/01/01'
mte.to_char_format = SearchCondition.DATE_FORMAT;
query.add(mte);