国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

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

Mybatis 級聯刪除的實現

瀏覽:113日期: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 數據庫
相關文章:
主站蜘蛛池模板: 华亭县| 定结县| 桑植县| 汉源县| 安徽省| 石泉县| 怀集县| 神农架林区| 桃园县| 汉中市| 新野县| 方正县| 金昌市| 金华市| 乐清市| 石景山区| 湖州市| 尉犁县| 大洼县| 咸阳市| 桐庐县| 大新县| 建昌县| 东乡族自治县| 新化县| 东乌| 吴忠市| 临安市| 峡江县| 淮南市| 海兴县| 乐山市| 山丹县| 利津县| 禹城市| 无极县| 涞水县| 阜南县| 镇雄县| 保康县| 高碑店市|