案列:
现有一个参数,是以逗号隔开的字符串,想根据该字符串查询想要的数据(如:select * from where id in (1,2,3,4,5))这里的字符串值就是 soid = "1,2,3,4,5"
解答:
在action或者是控制层写法就是将以逗号隔开的字符串转化为集合的形势
String soid = "1,2,3,4,5";
String[] ids = soid.split(",");
List<String> list = new ArrayList<String>();
for(int i=0;i<ids.length;i++){
list.add(ids[i]);
}
Map<String, Object> paraMap = new HashMap<String, Object>();
paraMap.put("ids", list);
.....
一、Ibtis中写法
select * from where table SA WHERE 1=1
<isNotEmpty prepend="and" property="ids">
SA.ID in
<iterate open="(" close=")" conjunction="," property="ids">
#ids[]#
</iterate>
</isNotEmpty>
二、Mybatis中写法:
select * from table where id in
<foreach item="item" index="index" collection="list" open="(" separator="," close=")">
#{item}
</foreach>