public class VariableConditionSyntaxConvertor extends SqlConvertorSupport
Constructor and Description |
---|
VariableConditionSyntaxConvertor() |
Modifier and Type | Method and Description |
---|---|
java.lang.String |
convert(java.lang.String sql,
java.lang.Object obj)
SQL文の可変条件構文を変換する。
$if{}で囲われた条件部分を可変条件と見なし、対応する入力条件がnullまたは空文字列の場合には条件を評価しないようにする。
例: |
void |
setAllowArrayEmptyString(boolean allowArrayEmptyString)
配列(
Collection を含む)のサイズが1の場合で、
その要素の値が空文字列の場合にその項目を検索条件に含めるか否かを設定する。 |
getBindValue
public java.lang.String convert(java.lang.String sql, java.lang.Object obj)
条件:where $if(userName){user_name = :userName} 入力あり->where (0 = 1 or (user_name = :userName)) 入力なし->where (0 = 0 or (user_name = :userName))パラメータで指定された、検索条件をもつオブジェクトの対象項目が、 入力なし(nullまたは空文字列)の場合には、検索条件から除外する。
Collection
の場合には、
nullまたはサイズが0の場合に検索条件から除外する。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%]
sql
- SQL文obj
- 検索条件をもつオブジェクトpublic void setAllowArrayEmptyString(boolean allowArrayEmptyString)
Collection
を含む)のサイズが1の場合で、
その要素の値が空文字列の場合にその項目を検索条件に含めるか否かを設定する。allowArrayEmptyString
- 検索条件に含める場合はtrueを設定する。