最近遇到工作中需要用到ibatis中的in函数,如果是固定的数据,则 在sql中直接 in (1,2,3,4)直接使用即可,或者在Java代码中使用StringBuilder 或StringBuffer进行拼接即可
在ibatis中sql.xml 中
一种是通过占位符 $ 的方式
String sheetid =“1,2,3,4,5”;如果是int类型,则需要用convert进行转换
<sql id="xxx">
select * from xxxx where
<![CDATA[ id in ($sheetid$) ]]>
</sql>
这种方式的优点就是简单,但是用$符 时要注意sql的注入
一种是用ibatis特有的函数进行循环
activityIds 需要确保为list 或数组
List<String> activityIds =new ArrayList<String>();
activityIds.add("1");
activityIds.add("2");
activityIds.add("3");
<sql id="xxxx">
select * from xxx where
and id in
<iterate property="activityIds" open="(" close=")" conjunction=",">
#activityIds[]#
</iterate>
</sql>
验证后这两种方式都可行,第二种建议,可以减少sql注入的风险