public class VariableInSyntaxConvertor extends SqlConvertorSupport
Constructor and Description |
---|
VariableInSyntaxConvertor() |
Modifier and Type | Method and Description |
---|---|
java.lang.String |
convert(java.lang.String sql,
java.lang.Object obj)
SQL文の可変IN構文を変換する。
IN句を検索条件にもつSQL文のIN句の項目数を付加する。
IN句を動的に生成する場合には、バインド変数名に「[]」を付加すること。 また、対応するオブジェクトのフィールドタイプは、配列またはCollectionとすること。 本機能は、検索条件のオブジェクトにMapインタフェースの実装クラスを指定することは出来ない。 Mapクラスは、値に対する型情報が存在しないため、IN句を構築する際に値が配列またはCollectionであることのチェックが確実に行えないためである。 これは、テスト時に確実に型チェックを行えないことを意味し(例えば値がnullの場合は、その型が何かは実行時にはわからない)、 予期せぬ不具合の温床となるため本フレームワークでは敢えてMapの使用を制限している。 例えば、「userKbn」をIN句のパラメータとして指定する場合には、「USER_KBN IN (:userKbn[])」となる。 例: |
getBindValue
public java.lang.String convert(java.lang.String sql, java.lang.Object obj)
Entity entity = new Entity(); entity.userKbn = new String[] {"1", "2"}; parser.parse( "SELECT " + "USER_ID " + "FROM " + "USER_MTR " + "WHERE " + "$if(userKbn) {USER_KBN IN (:userKbn[])} " parser.getSql(); -> SELECT USER_ID FROM USER_MTR WHERE (0 = 1 OR (USER_KBN IN (?, ?))) parser.getNameList(); -> [userKbn[0], userKbn[1]]
sql
- SQL文obj
- 検索条件をもつオブジェクト