Class VariableConditionSyntaxConvertor
java.lang.Object
nablarch.core.db.statement.sqlconvertor.SqlConvertorSupport
nablarch.core.db.statement.sqlconvertor.VariableConditionSyntaxConvertor
- All Implemented Interfaces:
SqlConvertor
SQL文の可変条件構文を変換するクラス。
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionSQL文の可変条件構文を変換する。void
setAllowArrayEmptyString
(boolean allowArrayEmptyString) 配列(Collection
を含む)のサイズが1の場合で、 その要素の値が空文字列の場合にその項目を検索条件に含めるか否かを設定する。Methods inherited from class nablarch.core.db.statement.sqlconvertor.SqlConvertorSupport
getBindValue
-
Constructor Details
-
VariableConditionSyntaxConvertor
public VariableConditionSyntaxConvertor()
-
-
Method Details
-
convert
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を設定する。
-