1. 程式人生 > >mybatis實現sql查詢in()語句

mybatis實現sql查詢in()語句

現象:使用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}”貌似無法實現傳值)