欧美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 注解將會(huì)在 select 語句的 where 條件添加條件,過濾掉已刪除數(shù)據(jù)

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

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

3.3 更新(update)

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

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

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

3.4 刪除(delete)

@TableLogic 注解會(huì)將 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使用AOP實(shí)現(xiàn)數(shù)據(jù)字典轉(zhuǎn)換

    如何利用Java使用AOP實(shí)現(xiàn)數(shù)據(jù)字典轉(zhuǎn)換

    這篇文章主要介紹了如何利用Java使用AOP實(shí)現(xiàn)數(shù)據(jù)字典轉(zhuǎn)換,AOP也是我們常說的面向切面編程,AOP在我們開發(fā)過程中應(yīng)用也比較多,在這里我們就基于AOP來實(shí)現(xiàn)一個(gè)數(shù)據(jù)字典轉(zhuǎn)換的案例
    2022-06-06
  • Spring使用AspectJ注解和XML配置實(shí)現(xiàn)AOP

    Spring使用AspectJ注解和XML配置實(shí)現(xiàn)AOP

    這篇文章主要介紹了Spring使用AspectJ注解和XML配置實(shí)現(xiàn)AOP的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • java實(shí)現(xiàn)24點(diǎn)紙牌游戲

    java實(shí)現(xiàn)24點(diǎn)紙牌游戲

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)24點(diǎn)紙牌游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • Spring在代碼中獲取bean的方法小結(jié)

    Spring在代碼中獲取bean的方法小結(jié)

    在工作中有時(shí)候我們需要在非spring依賴注入或管理的類中獲取service、dao等bean對象,這時(shí)候用@Autowired和@Resource顯然是不行的,那么下面這篇文章就給大家了整理幾種獲取bean的方式,對大家的學(xué)習(xí)和工作具有一定的參考借鑒,下面來一起看看吧。
    2016-11-11
  • Java 類型相互轉(zhuǎn)換byte[]類型,Blob類型詳細(xì)介紹

    Java 類型相互轉(zhuǎn)換byte[]類型,Blob類型詳細(xì)介紹

    這篇文章主要介紹了Java 類型相互轉(zhuǎn)換byte[]類型,Blob類型的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • 解決@Autowired注入空指針問題(利用Bean的生命周期)

    解決@Autowired注入空指針問題(利用Bean的生命周期)

    這篇文章主要介紹了解決@Autowired注入空指針問題(利用Bean的生命周期),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 詳解IDEA用maven創(chuàng)建springMVC項(xiàng)目和配置

    詳解IDEA用maven創(chuàng)建springMVC項(xiàng)目和配置

    本篇文章主要介紹了詳解IDEA用maven創(chuàng)建springMVC項(xiàng)目和配置 ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • java8 stream 如何打印數(shù)據(jù)元素

    java8 stream 如何打印數(shù)據(jù)元素

    這篇文章主要介紹了java8 stream 如何打印數(shù)據(jù)元素,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • SpringBoot詳解如何實(shí)現(xiàn)讀寫分離

    SpringBoot詳解如何實(shí)現(xiàn)讀寫分離

    當(dāng)響應(yīng)的瓶頸在數(shù)據(jù)庫的時(shí)候,就要考慮數(shù)據(jù)庫的讀寫分離,當(dāng)然還可以分庫分表,那是單表數(shù)據(jù)量特別大,當(dāng)單表數(shù)據(jù)量不是特別大,但是請求量比較大的時(shí)候,就要考慮讀寫分離了.具體的話,還是要看自己的業(yè)務(wù)...如果還是很慢,那就要分庫分表了...我們這篇就簡單講一下讀寫分離
    2022-05-05
  • Java Mail郵件發(fā)送如何實(shí)現(xiàn)簡單封裝

    Java Mail郵件發(fā)送如何實(shí)現(xiàn)簡單封裝

    這篇文章主要介紹了Java Mail郵件發(fā)送如何實(shí)現(xiàn)簡單封裝,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11

最新評論