Class SqlMacroEmptyColsAndPairs

java.lang.Object
jp.ecuacion.util.jpa.dao.sqlmacro.AbstractSqlMacro
jp.ecuacion.util.jpa.dao.sqlmacro.SqlMacroEmptyColsAndPairs

public class SqlMacroEmptyColsAndPairs extends AbstractSqlMacro
検索条件でありがちなパターン。 COL1とCOL2という2つの項目に関する検索を、複数パターンでしたしたいのだが、NULLおよび空文字の場合は検索条件に入れたくない、というもの。 例えば、COL1='a'かつCOL2='b'、COL1='c'(COL2は任意)、COL2='d'(COL1は任意)、という3パターンをORでつなぎたい、という場合だ。
その場合、以下のように記述する。結果のSQLはまるまる生成するので、パラメータの後は「?」のみの記載でよい。 {+null_Multi_cols_multi_pairs[COLS=COL1|COL2] ?}
ちなみに、渡すパラメータは、ArrayList<Object[]>。ArrayListはデータのペアの数分用意し、 Object[]は、カラムの個数分、今回でいうと常に長さ2の配列となる。
このinputから、以下のようなoutputSqlが出力される -> "(COL1 = 'a' and COL2 = 'b') or (COL1 = 'c') or (COL2 = 'd')" というSQLが結果として生成される。
>パラメータ -COLS:必須。対象カラム名を指定 -BEFORE:任意。例えば一番最初に"and"をつけたい場合はBEFORE=and と指定する。生成されるSQLが""の場合(パラメータがすべてnull)の場合はこの文字列は出力されない。 -AFTER:任意。例えば一番最初に"and"をつけたい場合はAFTER=and と指定する。生成されるSQLが""の場合(パラメータがすべてnull)の場合はこの文字列は出力されない。 -PAR:任意。PAR=trueを指定すると、出力結果が"((COL1 = 'a' and COL2 = 'b') or (COL1 = 'c') or (COL2 = 'd'))"のように、全体をかっこでくくった形となる。 BEFOREやafterの指定をする時は、併せてこれも指定する必要があると思われる。
  • Constructor Details

    • SqlMacroEmptyColsAndPairs

      public SqlMacroEmptyColsAndPairs()
  • Method Details