欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mybatis-plus實(shí)現(xiàn)邏輯刪除的示例代碼

 更新時(shí)間:2023年05月29日 09:46:01   作者:Bruce1801  
本文主要介紹了mybatis-plus實(shí)現(xiàn)邏輯刪除的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

什么是邏輯刪除?

邏輯刪除的本質(zhì)是修改操作,并不是真正的刪除,而是在表中將對應(yīng)的是否刪除標(biāo)識(delete_flag)做修改操作。比如0是未刪除,1是刪除。在邏輯上數(shù)據(jù)是被刪除的,但數(shù)據(jù)本身依然存在庫中。
邏輯刪除sql語句為:

update user set deleted=1 where id = 1 and deleted=0

這種設(shè)計(jì),后端每次向數(shù)據(jù)庫查詢數(shù)據(jù)時(shí),只查deleted=0(未刪除)的數(shù)據(jù)。拿上面sql舉例,那么客戶端進(jìn)行查詢id為1的信息,服務(wù)器就不會提供信息。
查詢sql為:

select id,name,deleted from user where deleted=0

為什么用到邏輯刪除?

比如:在一家銷售公司中,有兩個(gè)員工在一月份離職了,后臺管理人員在辦離職時(shí),如果直接將數(shù)據(jù)庫中與這兩個(gè)員工相關(guān)的信息刪除了,那么當(dāng)經(jīng)理想要看一月份的銷售記錄的時(shí)候,只能看到部分銷售記錄,銷售金額對不上。這種情況肯定是不允許發(fā)生的

如下圖:

本來一月總共銷售了17,000,00元,結(jié)果刪除后只剩下了5,000,00。

只需要在員工工號后面加delete_flag字段,用于標(biāo)記是否被刪除即可。

在springboot使用Mybatis-Plus提供的邏輯刪除

字段類型支持說明:

支持所有數(shù)據(jù)類型(推薦使用 Integer,Boolean,LocalDateTime)
如果數(shù)據(jù)庫字段使用datetime,邏輯未刪除值和已刪除值支持配置為字符串null,另一個(gè)值支持配置為函數(shù)來獲取值如now()

1、在application.yml配置

mybatis-plus:
  global-config:
    db-config:
      logic-delete-field: flag # 全局邏輯刪除的實(shí)體字段名(since 3.3.0,配置后可以忽略不配置步驟2)
      logic-delete-value: 1 # 邏輯已刪除值(默認(rèn)為 1)
      logic-not-delete-value: 0 # 邏輯未刪除值(默認(rèn)為 0)

2、 實(shí)體類字段上加上@TableLogic注解

@Data
public class UserPO implements Serializable {
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
    private String userName;
    private String password;
    private String nickName;
    @TableLogic
    private int delFlag;
}

演示

數(shù)據(jù)庫t_user表中數(shù)據(jù):

UserPOMapper:

@Mapper
public interface UserPOMapper extends BaseMapper<UserPO> {
}

IUserService:

public interface IUserService extends IService<UserPO> {
}

IUserServiceImpl:

@Service
public class IUserServiceImpl extends ServiceImpl<UserPOMapper, UserPO> implements IUserService {
}

Controller:

 @RequestMapping("/open/del")
    public ResultUtil del(UserParam userParam){
        UserPO one = iUserService.getOne(new LambdaQueryWrapper<UserPO>()
                .eq(UserPO::getUserName, userParam.getUserName()));
        boolean b = iUserService.removeById(one);
        System.out.println(b);
        return ResultUtil.success(b);
    }

ResultUtil:

@Data
public class ResultUtil {
    private String code;
    private String message;
    private  Object data;
    public static  ResultUtil success(Object data){
        ResultUtil resultUtil = new ResultUtil();
        resultUtil.setCode("200");
        resultUtil.setMessage("請求成功");
        resultUtil.setData(data);
        return resultUtil;
    }
}

瀏覽器請求:

數(shù)據(jù)庫t_user表中數(shù)據(jù):
可以看到,加了@TableLogic注解的字段對應(yīng)的數(shù)據(jù)庫字段,由0(未刪除)改為1(已刪除)

到此這篇關(guān)于mybatis-plus實(shí)現(xiàn)邏輯刪除的示例代碼的文章就介紹到這了,更多相關(guān)mybatis-plus 邏輯刪除內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JAVACORE與HEAPDUMP生成方法

    JAVACORE與HEAPDUMP生成方法

    JavaCore文件主要保存的是Java應(yīng)用各線程在某一時(shí)刻的運(yùn)行的位置,即JVM執(zhí)行到哪一個(gè)類、哪一個(gè)方法、哪一個(gè)行上,它是一個(gè)文本文件,打開后可以看到每一個(gè)線程的執(zhí)行棧,以stack?trace的顯示,本文介紹JAVACORE與HEAPDUMP生成大法,感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • 詳解JVM虛擬機(jī)的類加載機(jī)制

    詳解JVM虛擬機(jī)的類加載機(jī)制

    這篇文章主要介紹了詳解JVM虛擬機(jī)的類加載機(jī)制,虛擬機(jī)把描述類的數(shù)據(jù)從 Class 文件加載到內(nèi)存,并對數(shù)據(jù)進(jìn)行校驗(yàn)、轉(zhuǎn)換解析和初始化,最終形成可以被虛擬機(jī)直接使用的 Java 類型,這就是虛擬機(jī)的類加載機(jī)制,需要的朋友可以參考下
    2023-08-08
  • 如何使用Springfox?Swagger實(shí)現(xiàn)API自動生成單元測試

    如何使用Springfox?Swagger實(shí)現(xiàn)API自動生成單元測試

    Springfox是一個(gè)使用Java語言開發(fā)開源的API Doc的框架,它的前身是swagger-springmvc,可以將我們的Controller中的方法以文檔的形式展現(xiàn),這篇文章主要介紹了如何使用Springfox?Swagger實(shí)現(xiàn)API自動生成單元測試,感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • java模擬hibernate一級緩存示例分享

    java模擬hibernate一級緩存示例分享

    這篇文章主要介紹了java模擬hibernate一級緩存示例,需要的朋友可以參考下
    2014-03-03
  • Java14對于NullPointerException的新處理方式示例解析

    Java14對于NullPointerException的新處理方式示例解析

    這篇文章主要為大家介紹了Java14對于NullPointerException的新處理方式示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • java中讀寫Properties屬性文件公用方法詳解

    java中讀寫Properties屬性文件公用方法詳解

    在項(xiàng)目開發(fā)中我們會將很多環(huán)境特定的變量定義到一個(gè)配置文件中,比如properties文件,把數(shù)據(jù)庫的用戶名和密碼存放到此屬性文件中。下面這篇文章就主要介紹了java中讀寫Properties屬性文件公用方法,需要的朋友可以參考借鑒。
    2017-01-01
  • try catch finally的執(zhí)行順序深入分析

    try catch finally的執(zhí)行順序深入分析

    首先執(zhí)行try,如果有異常執(zhí)行catch,無論如何都會執(zhí)行finally,當(dāng)有return以后,函數(shù)就會把這個(gè)數(shù)據(jù)存儲在某個(gè)位置,然后告訴主函數(shù),我不執(zhí)行了,接下來你執(zhí)行吧,所以函數(shù)就會推出
    2013-09-09
  • MyBatis中#{}?和?${}?的區(qū)別和動態(tài)?SQL詳解

    MyBatis中#{}?和?${}?的區(qū)別和動態(tài)?SQL詳解

    這篇文章主要介紹了MyBatis中#{}和${}的區(qū)別,包括參數(shù)傳遞、安全性、性能等方面,然后詳細(xì)介紹了如何使用#{}和${}進(jìn)行排序、模糊查詢、動態(tài)SQL、數(shù)據(jù)庫連接池等操作,最后,總結(jié)了注解方式的動態(tài)SQL,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • Java實(shí)戰(zhàn)之校園外賣點(diǎn)餐系統(tǒng)的實(shí)現(xiàn)

    Java實(shí)戰(zhàn)之校園外賣點(diǎn)餐系統(tǒng)的實(shí)現(xiàn)

    這篇文章主要介紹了如何利用Java實(shí)現(xiàn)簡易的校園外賣點(diǎn)餐系統(tǒng),文中采用的技術(shù)有:JSP、Spring、SpringMVC、MyBatis 等,感興趣的可以了解一下
    2022-03-03
  • 解讀HttpServletRequestWrapper處理request數(shù)據(jù)流多次讀取問題

    解讀HttpServletRequestWrapper處理request數(shù)據(jù)流多次讀取問題

    在Java Web開發(fā)中,獲取HTTP請求參數(shù)是常見需求,本文詳細(xì)討論了通過POST方式獲取參數(shù)的兩種主要方法:使用request.getParameter()適用于application/x-www-form-urlencoded和multipart/form-data內(nèi)容類型;而對于application/json類型的數(shù)據(jù)
    2024-10-10

最新評論