这个问题网上大多数是从其他角度 比如怎么正确使用mybatis的<foreach>标签讲的。我自己遇到问题的时候确定自己使用标签没问题,但运行结果还是超出期望。
直接说结论吧。
如果xml中写的是:
mapper中 方法声明为
List<DstMsgDto> getlistByMsgids(@Param("msg_ids")List<String> msg_ids);
xml中sql为(简化了*部分)
select * from table where id IN
<foreach item="item" index="index" collection="msg_ids" open="(" separator="," close=")">
#{item}
</foreach>
那么最终执行的 sql会变成 select * from table where id IN('13,14') ; 这样只会查到id为 13的数据。
所以此时 还是要换成 ${}才可以执行期望的sql:
select * from table where id IN(13,14) ;
并且获得 两条数据。