现象:使用ssm框架 mybaits使用的sql语句中包含in()语句在java中该如何实现
比如:sql语句如下:
DELETE FROM tbl_channel_sms_deploy_province
WHERE exists (SELECT * FROM tbl_channel_sms_deploy
WHERE tbl_channel_sms_deploy_province.sms_deploy_id = tbl_channel_sms_deploy.id
AND tbl_channel_sms_deploy.sync_dest_mob = ‘1111111’) AND
tbl_channel_sms_deploy_province.province_id in (1,2,3)
或者简单语句如
DELETE from tbl_chanel where id in(1,2,3)
解决方案:
1:程序中传入完参数之后创建Map 传入sql语句中:
创建Map 放入参数 一个是字符串一个是list 其中list就是我们需要放入sql语句中in()中的参数;
2:在mybatis中的sql映射文件中
在sql映射文件中的parameterType写入java.util.map, 获取字符串参数的时候使用#{DestMob}就是Map的key。获取list作为in()中的参数:使用上图foreach标签 也是通过key获取。这样就实现sql的in()语句传值。
注意:
在获取Map中的list的时候:collection=”list”这样获取 而不是和字符串获取方式那样的#{list}(collection=”#{list}”貌似无法实现传值)