Mybatis-plus xml使用foreach遍历查询条件,填充IN函数时,查询不到数据
入参 List<String> [A,B,C,D,E,F]
WHERE sku_code IN
<foreach collection="listHistoryBrowseDateVO.list" item="skuCode" index="index" open="(" close=")"
separator=",">
#{skuCode}
</foreach>
以上代码在迭代器中,给IN函数赋值的时候,使用的是#{ }占位符号,最后解析出的sql是:
WHERE sku_code IN (A,B,C,D,E,F)不符合IN函数填充查询格式。
两种解决方式:
1、将入参处理为: String ‘A’,‘B’,‘C’,‘D’,‘E’,‘F’,然后使用占位符 WHERE sku_code IN (#{}) 直接填充
2、入参处理为:List [ ‘A’,‘B’,‘C’,‘D’,‘E’,‘F’],使用迭代器+拼接符${}
入参 List<String> [ 'A','B','C','D','E','F']
WHERE sku_code IN
<foreach collection="listHistoryBrowseDateVO.list" item="skuCode" index="index" open="(" close=")"
separator=",">
${skuCode}
</foreach>
Mybatis-plus #{} 占位符,${}拼接符,在sql解析的时是有区别的
参考 https://www.cnblogs.com/coder-wf/p/12198771.html