How to use an IN clause in iBATIS?
ibatis, java, sql
Solution
Here's a blog post that answers your question:
iBatis: Support for Array or List Parameter with SQL IN Keyword
<select id="select-test" resultMap="MyTableResult" parameterClass="list">
select * from my_table where col_1 in
<iterate open="(" close=")" conjunction=",">
#[]#
</iterate>
</select>
And in Java you should pass in a java.util.List. E.g.
List<String> list = new ArrayList<String>(3);
list.add("1");
list.add("2");
list.add("3");
List objs = sqlMapClient.queryForList("select-test",list);
Problem
I'm using iBATIS to create select statements. Now I would like to implement the following SQL statement with iBATIS: ``` SELECT * FROM table WHERE col1 IN ('value1', 'value2'); ``` With the following approach, the statement is not prepared correctly and no result returns: ``` SELECT * FROM table WHERE col1 IN #listOfValues#; ``` iBATIS seems to restructure this list and tries to interpret it as a string. How can I use the IN clause correctly?