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

mybatis-plus實現邏輯刪除的示例代碼

 更新時間:2024年05月16日 10:08:38   作者:IT云煙.  
在大多數公司里,都會采用邏輯刪除的方式,本文主要介紹了mybatis-plus實現邏輯刪除的示例代碼,具有一定的參考價值,感興趣的可以了解一下

一、什么是邏輯刪除?

邏輯刪除的本質是修改操作,并不是真正的刪除,而是在表中將對應的是否刪除標識(del_flag)做修改操作。比如0是未刪除,1是刪除。在邏輯上數據是被刪除的,但數據本身依然存在庫中。

邏輯刪除sql語句為:

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

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

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

二、為什么使用邏輯刪除?

  • 方便數據恢復,保護數據本身的價值。
  • 保證數據連續(xù)性,對主鍵的影響可能會導致底層B+樹重建,而 delete 和 update id 都會影響主鍵。

事實上,在大多數公司里,都會采用邏輯刪除的方式,因為數據的價值更大,被刪除的數據也非常有記錄價值,這樣的操作也并不會提高太多的操作難度。

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

字段類型支持說明:支持所有數據類型(推薦使用 Integer,Boolean,LocalDateTime)

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

3.1、在application.yml配置

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

3.2、實體類字段上加上@TableLogic注解

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

import java.io.Serializable;

/**
 * 用戶訂單
 *
 * @author yunyan
 */
@TableName("t_user")
@Data
public class UserPO implements Serializable {

    /**
     * id
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
    /**
     * 用戶名
     */

    private String userName;
    /**
     * 密碼
     */

    private String password;
    /**
     * 昵稱
     */

    private String nickName;
    /**
     * 刪除標識
     */
    @TableLogic
    private Integer delFlag;

3.3、演示

 3.4、UserMapper

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.testinterface.entity.po.UserPO;
import org.apache.ibatis.annotations.Mapper;

/**
 * 用戶映射器
 *
 * @author yunyan
 */
@Mapper
public interface UserMapper extends BaseMapper<UserPO> {
}

 3.5、IUserService

/**
 * 用戶服務
 *
 * @author yunyan
 */
public interface IUserService extends IService<UserPO> {

}

3.6、UserServiceImpl

/**
 * 用戶服務impl
 *
 * @author yunyan
 */
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, UserPO> implements IUserService {

}

3.7、controller

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

3.8、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;
    }
}

3.9、瀏覽器請求

 3.10、數據庫的數據

可以看到,加了@TableLogic注解的字段對應的數據庫字段,由0(未刪除)改為1(已刪除)

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

相關文章

  • Java?MCP?實戰(zhàn)之如何構建跨進程與遠程的工具服務

    Java?MCP?實戰(zhàn)之如何構建跨進程與遠程的工具服務

    MCP協(xié)議由Anthropic推出,支持stdio/SSE/Streaming通訊,提供工具、提示、資源原語,適用于AI與外部服務集成,兼容Java及多框架,具備鑒權、斷線重連等生產特性,助力構建分布式系統(tǒng),本文給大家介紹Java MCP實戰(zhàn)之如何構建跨進程與遠程的工具服務,感興趣的朋友一起看看吧
    2025-07-07
  • Mybatis-Plus開發(fā)提速器mybatis-plus-generator-ui詳解

    Mybatis-Plus開發(fā)提速器mybatis-plus-generator-ui詳解

    這篇文章主要介紹了Mybatis-Plus開發(fā)提速器mybatis-plus-generator-ui,本文簡要介紹一款基于Mybatis-Plus的代碼自助生成器,文章通過實例集成的方式來詳細講解mybatis-plus-generator-ui,從相關概念到實際集成案例,以及具體的擴展開發(fā)介紹,需要的朋友可以參考下
    2022-11-11
  • 詳解SpringBoot開發(fā)案例之整合定時任務(Scheduled)

    詳解SpringBoot開發(fā)案例之整合定時任務(Scheduled)

    本篇文章主要介紹了詳解SpringBoot開發(fā)案例之整合定時任務(Scheduled),具有一定的參考價值,有興趣的可以了解一下
    2017-07-07
  • Java中的BaseTypeHandler自定義類型轉換器的使用

    Java中的BaseTypeHandler自定義類型轉換器的使用

    這篇文章主要介紹了Java中的BaseTypeHandler自定義類型轉換器的使用,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • Java后端開發(fā)中Service層依賴注入的最佳實踐

    Java后端開發(fā)中Service層依賴注入的最佳實踐

    文章主要探討了在Java后端開發(fā)中,Service層依賴注入Mapper還是其他Service的問題,通過分析三層架構的職責劃分,文章指出了在不同場景下選擇合適的注入方式,需要的朋友可以參考下
    2026-01-01
  • 基于Java代碼實現數字在數組中出現次數超過一半

    基于Java代碼實現數字在數組中出現次數超過一半

    這篇文章主要介紹了基于Java代碼實現數字在數組中出現次數超過一半的相關資料,需要的朋友可以參考下
    2016-02-02
  • java原生動態(tài)生成驗證碼

    java原生動態(tài)生成驗證碼

    這篇文章主要為大家詳細介紹了java原生動態(tài)生成驗證碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • Java實現多選批量刪除功能(vue+Element)

    Java實現多選批量刪除功能(vue+Element)

    這篇文章主要為大家詳細介紹了Java實現多選批量刪除功能,包括前端vue實現代碼文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • SpringBoot核心@SpringBootApplication使用介紹

    SpringBoot核心@SpringBootApplication使用介紹

    這篇文章主要介紹了SpringBoot核心@SpringBootApplication的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 2020最新版idea激活教程(推薦)

    2020最新版idea激活教程(推薦)

    這篇文章主要介紹了2020最新版idea激活教程,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02

最新評論

理塘县| 泽库县| 北安市| 深水埗区| 闽侯县| 白沙| 辽阳市| 社旗县| 桃园县| 盘锦市| 曲阜市| 永平县| 永顺县| 茌平县| 霍林郭勒市| 固始县| 闸北区| 定西市| 资溪县| 岚皋县| 渝北区| 张家口市| 太湖县| 山丹县| 图们市| 定边县| 无棣县| 江川县| 海城市| 海伦市| 鹰潭市| 大冶市| 兴业县| 景泰县| 银川市| 神池县| 昆山市| 连云港市| 佛冈县| 雷波县| 台山市|