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

詳解MybatisPlus中@TableLogic注解的使用

 更新時(shí)間:2022年06月17日 10:44:07   作者:知識的搬運(yùn)工旺仔  
@TableLogic一般用于實(shí)現(xiàn)數(shù)據(jù)庫數(shù)據(jù)邏輯刪除,本文我們將介紹 @TableLogic 注解的用法,以及每個(gè)屬性的實(shí)際意義和用法,感興趣的可以了解一下

1. 簡單介紹

嗨,大家好,今天給想給大家分享一下關(guān)于Mybatis-plus 的 Service 層的一些方法的使用。今天沒有總結(jié),因?yàn)槎际且恍〢PI沒有什么可以總結(jié)的,直接看著調(diào)用就可以了。

下面我們將介紹 @TableLogic 注解的用法,以及每個(gè)屬性的實(shí)際意義和用法

2. 注解說明

@TableLogic 用于實(shí)現(xiàn)數(shù)據(jù)庫數(shù)據(jù)邏輯刪除

注意,該注解只對自動(dòng)注入的 sql 起效

3. @TableLogic 對于 CIUD 的限制

3.1 插入(insert)

不作限制

3.2 查找(select)

@TableLogic 注解將會在 select 語句的 where 條件添加條件,過濾掉已刪除數(shù)據(jù)

且使用 wrapper.entity 生成的 where 條件會忽略該字段

SELECT user_id,name,sex,age,deleted FROM user WHERE user_id=1 AND deleted='0'

3.3 更新(update)

@TableLogic 注解將會在 update 語句的 where 條件后追加條件,防止更新到已刪除數(shù)據(jù)

且使用 wrapper.entity 生成的 where條件會忽略該字段

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

3.4 刪除(delete)

@TableLogic 注解會將 delete 語句轉(zhuǎn)變?yōu)?update 語句

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

4. @TableLogic 字段類型支持說明:

支持所有數(shù)據(jù)類型(推薦使用 Integer、Boolean、LocalDateTime)

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

附錄:

(1)邏輯刪除是為了方便數(shù)據(jù)恢復(fù)和保護(hù)數(shù)據(jù)本身價(jià)值等等的一種方案,但實(shí)際就是刪除。

(2)如果你需要頻繁查出來看就不應(yīng)使用邏輯刪除,而是以一個(gè)狀態(tài)去表示。

5. 屬性說明

5.1 value

用來指定邏輯未刪除值,默認(rèn)為空字符串

5.2 delval

用來指定邏輯刪除值,默認(rèn)為空字符串。

6. 在配置文件中實(shí)現(xiàn)

當(dāng)然,你也可以不在 @TableLogic 注解中指定 value 和 delval 屬性的值。使用全局邏輯刪除配置信息,配置如下:

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

7. 代碼實(shí)踐

7.1 代碼實(shí)踐過程

我們在 user 數(shù)據(jù)表中添加一個(gè) deleted 字段。

如果該字段值為1,表示記錄被刪除。如果該字段值為0,表示記錄未被刪除

1.向 user 數(shù)據(jù)表添加 deleted 字段,sql 如下:

-- 添加一個(gè) deleted 字段,實(shí)現(xiàn)邏輯刪除
ALTER TABLE `user`
ADD COLUMN `deleted`  varchar(1) NULL DEFAULT 0 COMMENT '是否刪除(1-刪除;0-未刪除)';

2.創(chuàng)建 user 表的實(shí)體類 AnnotationUser7Bean

使用 @TableLogic 注解將 deleted 成員變量指定為邏輯刪除字段

import com.baomidou.mybatisplus.annotation.*;
 
@TableName(value = "user")
public class AnnotationUser7Bean {
   @TableId(value = "user_id", type = IdType.AUTO)
   private int userId;
    
   @TableField("name")
   private String name;
    
   @TableField("sex")
   private String sex;
    
   @TableField("age")
   private Integer age;
    
   @TableLogic(value = "0", delval = "1")
   private String deleted;
    
   // 忽略 getter 和 setter 方法
    
   @Override
   public String toString() {
      return "UserBean{" +
            "userId=" + userId +
            ", name='" + name + '\'' +
            ", sex='" + sex + '\'' +
            ", age=" + age +
            ", deleted=" + deleted +
            '}';
   }
}

上面代碼中,使用 @TableLogic 注解將 deleted 成員變量指定為邏輯刪除字段

@TableLogic(value = "0", delval = "1")
private String deleted;

3.客戶端代碼,先查詢用戶ID為1的用戶是否存在

如果存在,則刪除該用戶信息

然后,查詢用戶ID小于10的用戶信息

package com.hxstrive.mybatis_plus.simple_mapper.annotation;
 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.hxstrive.mybatis_plus.mapper.AnnotationUser7Mapper;
import com.hxstrive.mybatis_plus.model.AnnotationUser7Bean;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
 
@RunWith(SpringRunner.class)
@SpringBootTest
class AnnotationDemo7 {
 
    @Autowired
    private AnnotationUser7Mapper userMapper;
 
    @Test
    void contextLoads() throws Exception {
        // 刪除用戶ID為1的用戶信息
        AnnotationUser7Bean oldUserBean = userMapper.selectById(1);
        if(null != oldUserBean) {
            userMapper.deleteById(oldUserBean.getUserId());
        }
 
        // 查詢用戶信息
        QueryWrapper<AnnotationUser7Bean> wrapper = new QueryWrapper<>();
        wrapper.lt("user_id", 10);
        for(AnnotationUser7Bean item : userMapper.selectList(wrapper)) {
            System.out.println(item);
        }
    }
 
}

7.2 數(shù)據(jù)庫代碼執(zhí)行說明

根據(jù)用戶ID查詢用戶信息

Preparing: SELECT user_id,name,sex,age,deleted FROM user WHERE user_id=? AND deleted='0'
Parameters: 1(Integer)

根據(jù)用戶ID刪除用戶信息

sql 是一個(gè)更新語句,這是因?yàn)槲覀兪褂昧诉壿媱h除,而不是物理刪除

Preparing: UPDATE user SET deleted='1' WHERE user_id=? AND deleted='0'
Parameters: 1(Integer)

查詢用戶ID小于10的用戶信息

Preparing: SELECT user_id,name,sex,age,deleted FROM user WHERE deleted='0' AND (user_id < ?)
Parameters: 10(Integer)

以上就是詳解MybatisPlus中@TableLogic注解的使用的詳細(xì)內(nèi)容,更多關(guān)于MybatisPlus @TableLogic注解的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java實(shí)現(xiàn)的獲取和判斷文件頭信息工具類用法示例

    Java實(shí)現(xiàn)的獲取和判斷文件頭信息工具類用法示例

    這篇文章主要介紹了Java實(shí)現(xiàn)的獲取和判斷文件頭信息工具類,結(jié)合實(shí)例形式分析了Java針對文件讀取及頭信息判斷相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11
  • 新手必備的IDEA常用設(shè)置總結(jié)

    新手必備的IDEA常用設(shè)置總結(jié)

    今天給大家總結(jié)了一些IDEA的常用設(shè)置,文中有非常詳細(xì)的圖文介紹,對正在學(xué)習(xí)使用IDEA的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • 關(guān)于HashMap相同key累加value的問題

    關(guān)于HashMap相同key累加value的問題

    這篇文章主要介紹了關(guān)于HashMap相同key累加value的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Java利用MD5加鹽實(shí)現(xiàn)對密碼進(jìn)行加密處理

    Java利用MD5加鹽實(shí)現(xiàn)對密碼進(jìn)行加密處理

    在開發(fā)的時(shí)候,有一些敏感信息是不能直接通過明白直接保存到數(shù)據(jù)庫的。最經(jīng)典的就是密碼了。如果直接把密碼以明文的形式入庫,不僅會泄露用戶的隱私,對系統(tǒng)也是極其的不厲。本文就來和大家介紹一下如何對密碼進(jìn)行加密處理,感興趣的可以了解一下
    2023-02-02
  • 更改eclipse的JDK版本詳細(xì)步驟

    更改eclipse的JDK版本詳細(xì)步驟

    我們用eclipse在做項(xiàng)目的時(shí)候會切換jdk版本,本地運(yùn)行的項(xiàng)目所使用的jdk版本比Linux服務(wù)器高(低),需要調(diào)低(高)JDK版本,這篇文章主要給大家介紹了關(guān)于如何更改eclipse的JDK版本的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • Java實(shí)現(xiàn)單鏈表SingleLinkedList增刪改查及反轉(zhuǎn) 逆序等

    Java實(shí)現(xiàn)單鏈表SingleLinkedList增刪改查及反轉(zhuǎn) 逆序等

    單鏈表是鏈表的其中一種基本結(jié)構(gòu)。一個(gè)最簡單的結(jié)點(diǎn)結(jié)構(gòu)如圖所示,它是構(gòu)成單鏈表的基本結(jié)點(diǎn)結(jié)構(gòu)。在結(jié)點(diǎn)中數(shù)據(jù)域用來存儲數(shù)據(jù)元素,指針域用于指向下一個(gè)具有相同結(jié)構(gòu)的結(jié)點(diǎn)。 因?yàn)橹挥幸粋€(gè)指針結(jié)點(diǎn),稱為單鏈表
    2021-10-10
  • import java和javax區(qū)別小結(jié)

    import java和javax區(qū)別小結(jié)

    Java包和javax包在Java編程語言中都起著至關(guān)重要的作用,本文就來介紹一下import java和javax區(qū)別小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-10-10
  • SpringBoot項(xiàng)目解決跨域的四種方案分享

    SpringBoot項(xiàng)目解決跨域的四種方案分享

    在用SpringBoot開發(fā)后端服務(wù)時(shí),我們一般是提供接口給前端使用,但前端通過瀏覽器調(diào)我們接口時(shí),瀏覽器會有個(gè)同源策略的限制,即協(xié)議,域名,端口任一不一樣時(shí)都會導(dǎo)致跨域,這篇文章主要介紹跨域的幾種常用解決方案,希望對大家有所幫助
    2023-05-05
  • Spring中ApplicationListener的使用解析

    Spring中ApplicationListener的使用解析

    這篇文章主要介紹了Spring中ApplicationListener的使用解析,ApplicationContext事件機(jī)制是觀察者設(shè)計(jì)模式的實(shí)現(xiàn),通過ApplicationEvent類和ApplicationListener接口,需要的朋友可以參考下
    2023-12-12
  • springBoot 過濾器去除請求參數(shù)前后空格實(shí)例詳解

    springBoot 過濾器去除請求參數(shù)前后空格實(shí)例詳解

    這篇文章主要為大家介紹了springBoot 過濾器去除請求參數(shù)前后空格實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11

最新評論