Mybatis 級聯刪除的實現

2022-09-29 05:51:12 字數 1133 閱讀 5735

需求描述

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

通過資料庫實現

可以參考博文:

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

通過**實現

先寫乙個刪除資源和角色繫結的介面:

/*** 根據資源id刪除相關的角色資源繫結資料

* @param applicationids 資源ids

* @return 受影響行數

*/int deletebyapplicationid(list applicationids);

www.cppcns.com;

update tc_role_application

set is_delete =1

where application_id in (

#) and is_delete = 0

寫乙個刪除資源的介面:  

int deletebyids(@param("list") list var1, @param("operator") string var2);

www.cppcns.comete id="deletebyids">

update tc_application set is_delete = 1 , update_time=now() , operator = #

where id in (

#) and is_delete = 0

執行刪除時,先刪除子表資料,後刪除父表資料:

/*** 批量刪除資源並刪除其下相關的資源角色繫結資料

* @param ids 資源ids

*/@transactional(rollbackfor = exception.class)

@override

public void deleteapplicationbyids(list ids)

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

mybatis 級聯儲存,級聯刪除

在hibernate中,我們可以使用級聯儲存,而ibatis並沒有提供該功能特性,此時我們需要自己儲存關聯的物件資料。定義乙個需求 在儲存訂單的時候,希望一起儲存其關聯的訂單項。其dao層可以定義如下兩個方法分別儲存訂單和關聯的訂單項 service層可以作如下呼叫 這裡涉及到的事務可以選擇用spr...

Qt SQlite實現級聯刪除

include mainwindow.h include ui mainwindow.h include qsqldatabase include qdebug.h include qsqlquery mainwindow mainwindow qwidget parent qmainwindow ...

MyBatis 中的級聯

mybatis 的級聯分為 3 種。1 鑑別器 discriminator 它是根據某些條件決定採用具體實現類級聯的方案,比如體檢表要根據性別去區分。2 一對一 association 比如學生證和學生就是一對一的級聯,雇員和工牌也是一種一對一的級聯。3 一對多 collection 比如班主任和學...