<select id="findbycarite" parameterType="user" resultType="user"> select * from user <where> <foreach collection="list" item="ls" close=")" open="id in (" separator="," > #{ls} </foreach> </where>
</select>
此时 这个代码中得sql有个致命的缺陷。那就是如果此时list里面是null值。但是由于存在list.那么
list就会进入到里面,此时就是 id in () 因为只要有条件存在就会 where 条件就证明存在,此时就会
产生一个问题 就是 where id in () 此时就会出现错误。
foreach 先判断list是否为null 如果为null此时where 不会产生;
如果不为null此时 open 先开始 此时where 必须产生。
所以在foreach 要么用 string 来拼接字符串 要么 加if 判断
修改问题点:list不为null的时候 应该判定list 中是否有值。如果list中没有值。那就会出现这个异常。