Class VariableConditionSyntaxConvertor

java.lang.Object
nablarch.core.db.statement.sqlconvertor.SqlConvertorSupport
nablarch.core.db.statement.sqlconvertor.VariableConditionSyntaxConvertor
All Implemented Interfaces:
SqlConvertor

public class VariableConditionSyntaxConvertor extends SqlConvertorSupport
SQL文の可変条件構文を変換するクラス。
  • Constructor Details

    • VariableConditionSyntaxConvertor

      public VariableConditionSyntaxConvertor()
  • Method Details

    • convert

      public String convert(String sql, Object obj)
      SQL文の可変条件構文を変換する。

      $if{}で囲われた条件部分を可変条件と見なし、対応する入力条件がnullまたは空文字列の場合には条件を評価しないようにする。

      例:

       条件:where $if(userName){user_name = :userName}
            入力あり->where (0 = 1 or (user_name = :userName))
            入力なし->where (0 = 0 or (user_name = :userName))
       

      パラメータで指定された、検索条件をもつオブジェクトの対象項目が、 入力なし(nullまたは空文字列)の場合には、検索条件から除外する。
      ※その項目の型が、配列またはCollectionの場合には、 nullまたはサイズが0の場合に検索条件から除外する。
      検索条件からの除外の方法は、該当の条件が評価されないようにダミーの条件を付加する。
      例えば、user_name = :userNameという条件の場合。
      入力ありの場合:(0 = 1 or (user_name = :userName)) // 0 = 1は、一致しないため、user_name = :userNameが評価される。
      入力なしの場合:(0 = 0 or (user_name = :userName)) // 0 = 0は、一致するため、user_name = :userNameは評価されない。

      例:

       Entity entity = new Entity();
       entity.setUserName("ユーザ名");
       entity.setTel("");
      
       parser.parse(
            "SELECT "
              + "USER_ID "
          + "FROM "
              + "USER_MTR "
          + "WHERE "
              + "$if(userName) {USER_NAME = :userName%} "
              + "AND $if(tel) {TEL = :%tel%} "
              + "AND SKJ_FLG = '0'");
      
       parser.getSql(); ->
            SELECT USER_ID
              FROM USER_MTR
             WHERE (0 = 1 OR (USER_NAME = ?))
               AND (0 = 0 OR (TEL = ?))
               AND SKJ_FLG = '0'
       parser.getNameList(); -> [userName%, %tel%]
       
      Parameters:
      sql - SQL文
      obj - 検索条件をもつオブジェクト
      Returns:
      可変条件構文を変換したSQL文
    • setAllowArrayEmptyString

      public void setAllowArrayEmptyString(boolean allowArrayEmptyString)
      配列(Collectionを含む)のサイズが1の場合で、 その要素の値が空文字列の場合にその項目を検索条件に含めるか否かを設定する。
      Parameters:
      allowArrayEmptyString - 検索条件に含める場合はtrueを設定する。