mybatis postgresql 批量刪除


一、需求介紹

 前端是一個列表頁面,列表可以進行復選框的選擇,后台進行關聯表數據的刪除。

二、框架介紹

 springboot+mybatis 數據庫用的postgresql

三、具體代碼(前端js)

1、前端涉及到的代碼

//判斷選中狀態
var ids ="";

$(".checkbox").each(function () {
if($(this).is(':checked'))
ids +=$(this).val() + ",";
});
ids = ids.slice(0,ids.length-1);
//刪除
$.ajax({
cache: false,
type: "post",
dataType:'json',
data:{
id:ids,
},
2、邏輯處理層
Map<String, Object> m = getMaps(req);
log.info("|" + m + "|");
// 獲取選中的id
String ids=m.get("id").toString();
//將獲取到的選中的列表封裝在list中
List<String> list = new ArrayList<String>();
String[] stIds = ids.split(",");
for (String value : stIds){
list.add(value);
}
int row = knowledgeDao.deleteById(list);
3、dao層處理
這個仔細測試發現,只是刪除了(USING前)file_info 表中的數據,主表數據並沒有刪除
@Delete("<script>" +
"delete from file_info f USING resource_info k WHERE f.id = k.file_id and k.id in " +
" <foreach collection=\"list\" open=\"(\" close=\")\" separator=\",\" item=\"ids\">#{ids}</foreach>;" +
"</script>")
int deleteById(List<String> ids);

/**
* 刪除選擇的文件信息 先刪除字表數據,再刪除主表數據,多個sql實現,目前沒發現更好的辦法
* * @return
*/
@Delete("<script>" +
"delete from file_info f USING knowledge_info k WHERE f.id = k.file_id and k.id in " +
" <foreach collection=\"list\" open=\"(\" close=\")\" separator=\",\" item=\"ids\">#{ids}</foreach>;" +
" delete from knowledge_info WHERE id in " +
" <foreach collection=\"list\" open=\"(\" close=\")\" separator=\",\" item=\"ids\">#{ids}</foreach>;"+
"</script>")
int deleteById(List<String> ids);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM