久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

Mybatis 級聯刪除的實現

瀏覽:60日期:2023-10-21 18:01:13

需求描述

今日需求是刪除資源時同時刪除與該資源綁定的角色數據,有兩張表,資源表、角色與資源綁定表,級聯刪除的時候有兩種方法:①建立表時直接建立約束,當父表刪除數據時數據庫會自動去刪除子表中的數據,②通過代碼實現級聯刪除,先刪除子表數據,然后刪除父表中的數據。

通過數據庫實現

可以參考博文://www.jb51.net/article/88148.htm

這種方式假如我們要刪除父表的數據,子表的數據就會被刪除,而我們的業務需求是表中是否刪除由is_delete字段來標識,所以這種方式是可以實現級聯表刪除的,但是不符合我們的需求,在此只提供一種這樣的思路。

通過代碼實現

先寫一個刪除資源和角色綁定的接口:

/** * 根據資源id刪除相關的角色資源綁定數據 * @param applicationIds 資源ids * @return 受影響行數 */ int deleteByApplicationId(List<String> applicationIds);

<delete id='deleteByApplicationId'> UPDATE tc_role_application SET is_delete =1 WHERE application_id IN ( <foreach collection='list' item='id' separator=','> #{id} </foreach> ) AND is_delete = 0 </delete>

寫一個刪除資源的接口:

int deleteByIds(@Param('list') List<String> var1, @Param('operator') String var2);

<delete id='deleteByIds'> update tc_application set is_delete = 1 , update_time=now() , operator = #{operator,jdbcType=VARCHAR} where id in ( <foreach collection='list' item='id' separator=','> #{id} </foreach> ) and is_delete = 0 </delete>

執行刪除時,先刪除子表數據,后刪除父表數據:

/** * 批量刪除資源并刪除其下相關的資源角色綁定數據 * @param ids 資源ids */ @Transactional(rollbackFor = Exception.class) @Override public void deleteApplicationByIds(List<String> ids) { String user = TenancyContext.UserID.get(); //先刪除資源角色表中資源和角色綁定的數據 roleApplicationService.deleteByApplicationId(ids); //刪除資源表數據 this.deleteByIds(ids, user); }

總結

根據需求和實際選擇合適自己的方法。

到此這篇關于Mybatis 級聯刪除的實現的文章就介紹到這了,更多相關Mybatis 級聯刪除內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Mybatis 數據庫
相關文章:
主站蜘蛛池模板: 华池县| 上思县| 达孜县| 浦东新区| 醴陵市| 西吉县| 开化县| 岳西县| 汉源县| 麻阳| 永寿县| 日土县| 辉县市| 富宁县| 涪陵区| 德安县| 江孜县| 嘉鱼县| 江西省| 安西县| 颍上县| 社旗县| 靖边县| 仁怀市| 苏尼特左旗| 宾川县| 美姑县| 上高县| 武宁县| 罗平县| 普安县| 木兰县| 富顺县| 塘沽区| 新龙县| 沙坪坝区| 昔阳县| 霸州市| 游戏| 通州区| 简阳市|