以下のコードのように、句ステートメントでリスト/文字列配列を渡すことができることを知っています
ここから
iBatis で IN 句を使用して複数のパラメーターを渡す方法を教えてください。
これは可能です。
Select に必要な 3 つのプロパティを保持する、入力を保持するためのクラスを定義します。
C# を使用している場合は、次のようになります。
public class UserRetrievalParams
{
public String FirstName { get; set; }
public String LastName { get; set; }
public IList<String> UserNames { get; set; }
}
...または似たようなもの。そのオブジェクトのインスタンスを作成し、リストにユーザー名を入力します。
次に、そのオブジェクトをパラメーターとして Ibatis に渡すと、次のようにプロパティを参照できます。
<select id="example" resultMap="yourMap" parameterClass="UserRetrievalParams">
select * from YourTable where
username in
<iterate property="UserNames" open="(" close=")" conjunction=",">
#UserNames[]:char#
</iterate>
and user_first_name=#FirstName:char#
and user_last_name=#LastName:char#
</select>
2 つの場所で UserNames リスト プロパティを参照しなければならないという、やや直観に反する構文に注意してください。
この構文は、.Net 2 以降の Ibatis バージョン 1.6.2.0 で正常に使用しています。
それが役立つことを願っています。