如何在iBATIS中使用IN子句?

gue*_*rda 17 java sql ibatis

我正在使用iBATIS来创建select语句.现在我想用iBATIS实现以下SQL语句:

SELECT * FROM table WHERE col1 IN ('value1', 'value2');
Run Code Online (Sandbox Code Playgroud)

使用以下方法,语句未正确准备且没有返回结果:

SELECT * FROM table WHERE col1 IN #listOfValues#;
Run Code Online (Sandbox Code Playgroud)

iBATIS似乎重组了这个列表并尝试将其解释为字符串.

如何正确使用IN子句?

jit*_*ter 31

这是一篇回答你问题的博文:

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>
Run Code Online (Sandbox Code Playgroud)

在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);
Run Code Online (Sandbox Code Playgroud)

  • 我简直不敢相信我只是提出了一个iBatis问题/答案.这个项目何时结束,我可以停止使用iBatis? (3认同)

Jon*_*erg 12

怎么样

<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>
Run Code Online (Sandbox Code Playgroud)