最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MyBatis-Plus實(shí)現(xiàn)邏輯刪除功能解析

 更新時(shí)間:2023年11月20日 08:59:37   作者:西瓜游俠  
這篇文章主要介紹了MyBatis-Plus實(shí)現(xiàn)邏輯刪除功能解析,有時(shí)候并不需要真正的刪除數(shù)據(jù),而是想邏輯刪除,方便數(shù)據(jù)恢復(fù),MyBatis-Plus可以很方便的實(shí)現(xiàn)邏輯刪除的功能,需要的朋友可以參考下

前言

有時(shí)候并不需要真正的刪除數(shù)據(jù),而是想邏輯刪除,方便數(shù)據(jù)恢復(fù)。

MyBatis-Plus可以很方便的實(shí)現(xiàn)邏輯刪除的功能。

Entity類

首先,數(shù)據(jù)庫表添加一個(gè)表示邏輯刪除的字段delete_flag:

CREATE TABLE `tb_user` (
  `id` bigint NOT NULL COMMENT '主鍵ID',
  `name` varchar(30) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '姓名',
  `age` int DEFAULT NULL COMMENT '年齡',
  `email` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '郵箱',
  `create_time` timestamp NOT NULL COMMENT '創(chuàng)建時(shí)間',
  `update_time` timestamp NOT NULL COMMENT '更新時(shí)間',
  `delete_flag` tinyint(1) NOT NULL COMMENT '邏輯刪除,0 - 未刪除;-1 - 已刪除',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci

對(duì)應(yīng)的UserEntity實(shí)體類:

@Data
@TableName("tb_user")
public class UserEntity {
    private Long id;
    private String name;
    private Integer age;
    private String email;

    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private Date createTime;

    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

    private Integer deleteFlag;
}

配置

首先,需要在UserEntity實(shí)體類中的deleteFlag字段上進(jìn)行注解配置:

@TableLogic(value = "0", delval = "-1")配置邏輯刪除字段的值,value的值表示未刪除的時(shí)候的值,delval的值表示已刪除時(shí)候的值;

@TableField(value = "delete_flag", fill = FieldFill.INSERT)配置deleteFlag字段的自動(dòng)填充規(guī)則。

@Data
@TableName("tb_user")
public class UserEntity {
    private Long id;
    private String name;
    private Integer age;
    private String email;

    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private Date createTime;

    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

    @TableLogic(value = "0", delval = "-1")
    @TableField(value = "delete_flag", fill = FieldFill.INSERT)
    private Integer deleteFlag;
}

可以配置deleteFlag在insert數(shù)據(jù)的時(shí)候,默認(rèn)填充0:

/**
 * 自動(dòng)填充字段值得配置
 */
@Component
public class AutoFillFieldValueConfig implements MetaObjectHandler {

    @Override
    public void insertFill(MetaObject metaObject) {
        this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
        this.strictInsertFill(metaObject, "updateTime", Date.class, new Date());
        this.strictInsertFill(metaObject, "deleteFlag", Integer.class, 0);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());
    }
}

測(cè)試一下

下面來測(cè)試一下。

首先,添加一個(gè)新的用戶:

    @Test
    public void testLogicDelete() {
        // 插入一個(gè)新的用戶
        UserEntity newUser = new UserEntity();
        newUser.setId(11L);
        newUser.setName("Kevin");
        newUser.setAge(25);
        newUser.setEmail("kevin@163.com");
        userMapper.insert(newUser);
    }

控制臺(tái)日志:

==>  Preparing: INSERT INTO tb_user ( id, name, age, email, create_time, update_time, delete_flag ) VALUES ( ?, ?, ?, ?, ?, ?, ? )
==> Parameters: 11(Long), Kevin(String), 25(Integer), kevin@163.com(String), 2021-09-20 21:29:37.232(Timestamp), 2021-09-20 21:29:37.234(Timestamp), 0(Integer)
<==    Updates: 1

數(shù)據(jù)庫數(shù)據(jù):

在這里插入圖片描述

可以看到,delete_flag默認(rèn)填充了0。

下面,來測(cè)試一下邏輯刪除(現(xiàn)在調(diào)用所有的刪除方法,都是邏輯刪除):

    @Test
    public void testLogicDelete() {
        // 插入一個(gè)新的用戶
//        UserEntity newUser = new UserEntity();
//        newUser.setId(11L);
//        newUser.setName("Kevin");
//        newUser.setAge(25);
//        newUser.setEmail("kevin@163.com");
//        userMapper.insert(newUser);

        // 邏輯刪除
        userMapper.deleteById(11L);
    }

控制臺(tái)日志:

==>  Preparing: UPDATE tb_user SET delete_flag=-1 WHERE id=? AND delete_flag=0
==> Parameters: 11(Long)
<==    Updates: 1

可以看到,刪除方法并沒有執(zhí)行DELETE語句,而是執(zhí)行的UPDATE語句,更新了delete_flag字段的值。

數(shù)據(jù)庫數(shù)據(jù):

在這里插入圖片描述

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

相關(guān)文章

  • 詳解使用Jenkins自動(dòng)編譯部署web應(yīng)用

    詳解使用Jenkins自動(dòng)編譯部署web應(yīng)用

    本篇主要介紹基于Jenkins實(shí)現(xiàn)持續(xù)集成的方式,通過案例介紹線上自動(dòng)編譯及部署的配置過程,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-06-06
  • 初探Spring Cloud Gateway實(shí)戰(zhàn)

    初探Spring Cloud Gateway實(shí)戰(zhàn)

    這篇文章主要介紹了創(chuàng)建網(wǎng)關(guān)項(xiàng)目(Spring Cloud Gateway)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-08-08
  • Java大小寫轉(zhuǎn)換及一些常見的注意事項(xiàng)詳解

    Java大小寫轉(zhuǎn)換及一些常見的注意事項(xiàng)詳解

    這篇文章主要介紹了Java大小寫轉(zhuǎn)換及一些常見的注意事項(xiàng)的相關(guān)資料,Java提供了多種方法進(jìn)行大小寫轉(zhuǎn)換,包括String類的toLowerCase和toUpperCase方法,以及Character類的toLowerCase和toUpperCase方法,需要的朋友可以參考下
    2025-02-02
  • Java C++ leetcode執(zhí)行一次字符串交換能否使兩個(gè)字符串相等

    Java C++ leetcode執(zhí)行一次字符串交換能否使兩個(gè)字符串相等

    這篇文章主要為大家介紹了Java C++ leetcode1790執(zhí)行一次字符串交換能否使兩個(gè)字符串相等,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • SpringBoot項(xiàng)目中接口防刷的完整代碼

    SpringBoot項(xiàng)目中接口防刷的完整代碼

    本文通過實(shí)例代碼給大家介紹了SpringBoot項(xiàng)目中接口防刷的方法,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-07-07
  • Java動(dòng)態(tài)代理模式的深入揭秘

    Java動(dòng)態(tài)代理模式的深入揭秘

    這篇文章主要給大家介紹了關(guān)于Java動(dòng)態(tài)代理模式的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • SpringBoot和Vue項(xiàng)目服務(wù)器發(fā)布流程分享

    SpringBoot和Vue項(xiàng)目服務(wù)器發(fā)布流程分享

    本文詳細(xì)介紹了如何將SpringBoot和Vue項(xiàng)目發(fā)布到阿里云ECS服務(wù)器上的步驟,包括準(zhǔn)備服務(wù)器、安裝寶塔、配置數(shù)據(jù)庫、打包項(xiàng)目、上傳文件、設(shè)置端口、安裝軟件和注冊(cè)網(wǎng)站等
    2025-02-02
  • SpringBoot WebService服務(wù)端&客戶端使用案例教程

    SpringBoot WebService服務(wù)端&客戶端使用案例教程

    這篇文章主要介紹了SpringBoot WebService服務(wù)端&客戶端使用案例教程,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-10-10
  • Springboot集成ProtoBuf的實(shí)例

    Springboot集成ProtoBuf的實(shí)例

    這篇文章主要介紹了Springboot集成ProtoBuf的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 詳解SpringCloud服務(wù)認(rèn)證(JWT)

    詳解SpringCloud服務(wù)認(rèn)證(JWT)

    本篇文章主要介紹了SpringCloud服務(wù)認(rèn)證(JWT),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01

最新評(píng)論

柳河县| 金沙县| 临汾市| 贵德县| 西安市| 胶州市| 永善县| 隆子县| 南木林县| 仙居县| 全椒县| 上蔡县| 南宁市| 稻城县| 资阳市| 林州市| 毕节市| 丹江口市| 耒阳市| 岱山县| 永清县| 武威市| 巴青县| 嘉祥县| 淅川县| 嵊泗县| 正宁县| 略阳县| 清丰县| 库伦旗| 兴文县| 富锦市| 白朗县| 巴彦县| 林芝县| 海城市| 白玉县| 兴和县| 宁乡县| 察隅县| 穆棱市|