Java 如何在iBATIS中使用IN子句?

Java 如何在iBATIS中使用IN子句?,java,sql,ibatis,Java,Sql,Ibatis,我正在使用创建select语句。现在,我想用iBATIS实现以下SQL语句: SELECT * FROM table WHERE col1 IN ('value1', 'value2'); 使用以下方法时,语句准备不正确,也不会返回结果: SELECT * FROM table WHERE col1 IN #listOfValues#; iBATIS似乎重新构造了此列表,并试图将其解释为字符串 如何正确使用IN子句?如何 <select id="foo" parameterClass=

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

SELECT * FROM table WHERE col1 IN ('value1', 'value2');
使用以下方法时,语句准备不正确,也不会返回结果:

SELECT * FROM table WHERE col1 IN #listOfValues#;
iBATIS似乎重新构造了此列表,并试图将其解释为字符串

如何正确使用IN子句?

如何

<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>

以下是一篇回答您问题的博文:

在Java中,您应该传入 java.util.List。例如

或:


您可以这样使用它:

<select id="select-test" resultMap="MyTableResult" >
select * from my_table where col_1 in
 $listOfValues$
</select>

在in语句中使用$。

这是一个老问题,但对于MyBatis用户来说,语法有点不同:

<select id="select-test" parameterClass="list"resultMap="YourResultMap">
     select * from table where col_1 IN 
     <iterate open="(" close=")" conjunction=",">
      #[]#
    </iterate>
</select>
<select id="selectPostIn" resultType="domain.blog.Post">
  SELECT *
  FROM POST P
  WHERE ID in
  <foreach item="item" index="index" collection="list"
      open="(" separator="," close=")">
        #{item}
  </foreach>
</select>

请参阅。

所有这些xml让我想吐,但thx提供的信息对我必须使用iBatis的项目非常有用。我不敢相信我刚刚对iBatis的问题/答案投了赞成票。这个项目什么时候结束,我可以停止使用iBatis?不,iBatis太棒了。至少你可以写SQL而不是其他讨厌的东西。你能读一下我类似的帖子吗,谢谢!:要不要评论一下你的代码?如果2年前有另一个被接受的答案,有9张赞成票,那么你的答案是什么?这会产生类似于[aaa,abb,acc]的内容?你能建议我如何将这个默认值[]改为因为oracle不支持[]谢谢,你救了我的命:D
<select id="select-test" resultMap="MyTableResult" >
select * from my_table where col_1 in
 $listOfValues$
</select>
<select id="select-test" parameterClass="list"resultMap="YourResultMap">
     select * from table where col_1 IN 
     <iterate open="(" close=")" conjunction=",">
      #[]#
    </iterate>
</select>
<select id="selectPostIn" resultType="domain.blog.Post">
  SELECT *
  FROM POST P
  WHERE ID in
  <foreach item="item" index="index" collection="list"
      open="(" separator="," close=")">
        #{item}
  </foreach>
</select>