Mybatis-Plus 逻辑删除的用法

这篇具有很好参考价值的文章主要介绍了Mybatis-Plus 逻辑删除的用法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

说明

本文介绍Mybatis-Plus的逻辑删除的用法。

删除功能是项目中经常见到的需求。比如:需要删除一个订单,一般不会把实际数据删除,而是逻辑删除。一般表中有一个is_deleted字段标识该用户是否被删除,0 表示未删除 1 表示已删除。

官网

逻辑删除 | MyBatis-Plus​

配置(非必须)

配置删除未删除的状态码

配置未删除、已删除分别标识的状态码是什么,这里采用的yml格式。

mybatis-plus:
  global-config:
    db-config:
      # 1 代表已删除。默认是1。也可写为字段名,如:id,这样删除时会将id的值写到逻辑删除字段
      logic-delete-value: 1
      # 0 代表未删除。默认是0
      logic-not-delete-value: 0

全局配置字段名(可不配置)

若项目代码比较规范,所有表的逻辑删除字段使用相同的名称(比如:deleted_flag),我们可以在 application.properties 中添加如下统一的配置,这样对应的实体类字段上就不需要再添加 @TableLogic 注解了:

注意:如果设置了全局逻辑删除字段值,实体类上仍然有 @TableLogic 则以实体上的为准,忽略全局。

mybatis-plus:
  global-config:
    db-config:
      logic-delete-field: deleted_flag

entity

实体类对应的字段上加上注解@TableLogic

@Data
@TableName("t_user")
public class User {
 
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
 
    @TableLogic
    private String deleted;
}

数据库

数据库deleted列,设置为tinyint类型,长度为1

测试

插入测试

插入时,sql语句不会涉及逻辑删除的字段。

查询、修改测试

使用MP逻辑删除的功能之后,执行查询、修改的方法,MP会为我们自动加上未删除的条件。自定义sql除外

    @Test
    public void select(){
        List<User> users = userMapper.selectList(Wrappers.<User>lambdaQuery().eq(User::getAge, 18));
        users.forEach(System.out::println);
    }
 
    @Test
    public void update(){
        User user = new User();
        user.setEmail("Test@email.com");
        
        int update = userMapper.update(user, Wrappers.<User>lambdaQuery().eq(User::getAge, 18));
        System.out.println(update);
    }

DEBUG==>  Preparing: SELECT id,login_name,name,password,email,salt,sex,age,phone,user_type,status,organization_id,create_time,is_delete FROM sys_user WHERE deleted='0' AND age = ? 
DEBUG==> Parameters: 18(Integer)
DEBUG<==      Total: 0
 
 
DEBUG==>  Preparing: UPDATE sys_user SET email=? WHERE deleted='0' AND age = ? 
DEBUG==> Parameters: Test@email.com(String), 18(Integer)
DEBUG<==    Updates: 0

删除测试

(执行的SQL语句是UPDATE)

@Test
    public void delete() {
        int i = userMapper.deleteById(1);
        System.out.println(i);
    }
DEBUG==>  Preparing: UPDATE sys_user SET is_delete='1' WHERE id=? AND deleted='0' 
DEBUG==> Parameters: 1(Integer)
DEBUG<==    Updates: 1

不查询is_deleted字段

@TableField(select = false)即可。还可使用Wrapper的select表达式来排除某些查询字段,只是通过注解的方式更方便。文章来源地址https://www.toymoban.com/news/detail-526102.html

    @TableLogic
    @TableField(select = false)
    private String deleted;

到了这里,关于Mybatis-Plus 逻辑删除的用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mybatis plus中的逻辑删除源码跟踪

    网上搜了一堆文章,都没有贴出源码: 疑问: 逻辑删除,delete和select到底是在哪改变的sql??? 一、跟踪方法——DeleteById 说明: 逻辑删除,实质用的update语句; 组装逻辑删除字段: 逻辑删除的sql(实质都是update): 至此大改已经清楚了!~ 二、跟踪方法——selectList 类似

    2024年02月08日
    浏览(48)
  • MyBatis-Plus使用条件构造器实现不同条件的查询,更新删除操作

    Wrapper 是所有条件构造器的父类,作用是生成条件语句,即where后面的sql子句 在调用查询,更新,删除操作时,需要根据条件进行判断,可以使用条件构造器进行组合条件,生成where后面条件子句 QueryWrapper,UpdateWrapper LambdaQueryWrapper,LambdaUpdateWrapper UpdateWrapper提供了set方法,可以

    2024年02月15日
    浏览(43)
  • MyBatis-Plus条件构造器[常用的模糊查询、排序查询、逻辑查询和指定字段查询案例]

    Mybatis-Plus知识点[MyBatis+MyBatis-Plus的基础运用]_心态还需努力呀的博客-CSDN博客  Mybatis-Plus+SpringBoot结合运用_心态还需努力呀的博客-CSDN博客 MyBaits-Plus中@TableField和@TableId用法_心态还需努力呀的博客-CSDN博客 MyBatis-Plus中的更新操作(通过id更新和条件更新)_心态还需努力呀的博客

    2024年02月06日
    浏览(86)
  • 【Mybatis-Plus】Mybatis-Plus快速入门

    Mybatis-Plus是基于Mybatis的数据库操作组件,其实现的功能完全是Mybatis的功能拓展,不改变Mybatis的使用方式,可以兼容Mybatis的操作方式。 创建一个数据库、一个表进行基础操作: 创建一个Spring项目,项目通过Spring Initlizer创建,不导入任何依赖包,在POM.xml文件中进行依赖导入

    2024年02月07日
    浏览(46)
  • Spring Boot学习随笔- 集成MyBatis-Plus(三)自定义SQL、分页实现(PaginationInterceptor )、更新和删除详细方法

    学习视频:【编程不良人】Mybatis-Plus整合SpringBoot实战教程,提高的你开发效率,后端人员必备! 自定义mapper文件是为了应对一些更复杂的查询场景,首先先配置映射路径 由于这里的mapper文件放在java文件夹中,所以要在pom.xml里进行配置 mapper 测试 在MyBatis Plus中, 物理分页 和 内

    2024年02月03日
    浏览(55)
  • Mybatis-Plus 进阶开发 -- Mybatis-Plus 入门教程(二)

    为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。 (博客的参考源码可以在我主页的资源里找到,如果在学习的

    2024年02月10日
    浏览(51)
  • Mybatis-Plus(三)--Mybatis-Plus配置和条件构造器

    在MP中有大量的配置,其中有一部分是Mybatis原生的配置,另一部分是MP的配置,详情:https://mybatis.plus/config 【1】configLocation--自己单独的MyBatis配置的路径 SpringMVC的xml中写法: 【2】mapperLocations--MyBatis Mapper所对应的XML文件位置 如果你在Mapper中有自定义方法(XML中有自定义实现

    2024年02月15日
    浏览(62)
  • Mybatis-Plus通用枚举功能 [MyBatis-Plus系列] - 第493篇

    历史文章( 文章 累计490+) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《

    2024年02月08日
    浏览(39)
  • 【MyBatis-Plus】MyBatis进阶使用

    目录 一、MyBatis-Plus简介 1.1 介绍 1.2 优点 1.3 结构 二、MyBatis-Plus基本使用 2.1 配置 2.2 代码生成 2.3 CRUD接口测试 三、MyBatis-Plus策略详解 3.1 主键生成策略 3.2 雪花ID生成器 3.3 字段自动填充策略 3.4 逻辑删除 四、MyBatis-Plus插件使用 4.1 乐观锁插件 4.1.1 什么是乐观锁和悲观锁? 4.

    2024年02月04日
    浏览(49)
  • Mybatis 框架 ( 三 ) Mybatis-Plus

    官网 : https://www.baomidou.com/ MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上封装了大量常规操作,减少了SQL的编写量。 使用时通常通过Springboot框架整合使用 并且使用Lombok框架简化实体类 重点注意 : 与 SpringBoot整合时, 在启动类增加注解 @MapperScan(\\\"mapper接口路径 \\\") 或者

    2024年02月01日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包