如何在iBATIS中使用IN子句?
我正在使用iBATIS创建选择语句。现在我想用iBATIS实现以下SQL语句:
SELECT * FROM table WHERE col1 IN ('value1', 'value2');
使用以下方法,语句未正确准备,并且不返回任何结果:
SELECT * FROM table WHERE col1 IN #listOfValues#;
iBATIS似乎重新构建了这个列表,并试图将其解释为字符串。
如何正确使用 IN 子句?
我正在使用iBATIS创建选择语句。现在我想用iBATIS实现以下SQL语句:
SELECT * FROM table WHERE col1 IN ('value1', 'value2');
使用以下方法,语句未正确准备,并且不返回任何结果:
SELECT * FROM table WHERE col1 IN #listOfValues#;
iBATIS似乎重新构建了这个列表,并试图将其解释为字符串。
如何正确使用 IN 子句?
这是一篇博客文章,可以回答您的问题:
iBatis:支持使用 SQL IN 关键字的数组或列表参数
<select id="select-test" resultMap="MyTableResult" parameterClass="list">
select * from my_table where col_1 in
<iterate open="(" close=")" conjunction=",">
#[]#
</iterate>
</select>
在Java中,你应该传入java.util.List。例如:
List<String> list = new ArrayList<String>(3);
list.add("1");
list.add("2");
list.add("3");
List objs = sqlMapClient.queryForList("select-test",list);
怎么样
<select id="foo" parameterClass="Quuxly" resultClass="Flobitz">
select * from table
<dynamic prepend="where col1 in ">
<iterate property="list_of_values" open="('" close="')" conjunction=", ">
#list_of_values[]#
</iterate>
</dynamic>
</select>