sql<foreach>遇到的问题总结
最近在工作中,使用<foreach>
时遇到了两个问题
第一个问题是,向<foreach>
中传一个ArrayList,里面有5条数据,其中有两条数据一样,期望能查出5条数据,但结果仅查出4条数据,刚开始以为是 查出的结果集自动去重,
后来通过查看日志发现是查询条件把重复的去掉了
请教同事得知<foreach>
是把条件用or连接起来
比如传进来一个数组{1,2,3,4,4}
语句就是
select * from table where x=1 or x=2 or x=3 or x=4 or x=4
答案一目了然
还有一个问题其实和<foreach>
关系也不是很大
select * from table where 1=1 <if test="x!=null"> and x in<foreach item="item">#{item}</foreach></if>
表面看上去没什么问题
但是,如果传进来x是空值的话 查出来的就是全部值 但是本意是 什么都不传进来 就 不返回结果
解决方法加一个对数组长度的判读是否为空
还没有评论,来说两句吧...