MyBatisPlus(六)软删除(逻辑删除)

简介: 在项目中软删除是必须用到的,那么需要一些配置来支持软删除

在项目中软删除是必须用到的,那么需要一些配置来支持软删除

mybatis-plus:
  global-config:
    db-config:
      logic-delete-field: deleted  # 全局逻辑删除的实体字段名
      logic-delete-value: 1 # 逻辑已删除值(默认为 1)
      logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)

logic-delete-field 用于配置全局软删除实体字段名

logic-delete-value软删除值

logic-not-delete-value未软删除值

也可单独配置某个实体类的软删除字段,在字段上加上@TableLogic注解即可:

@TableLogic
private boolean deleted;

插入

插入时会自动将deleted设为false

@Test
public void testInsert() {
   
    Dept dept = new Dept();
    dept.setName("总经办");
    int result = deptMapper.insert(dept);
    System.out.println(result);
}

执行日志:

JDBC Connection [HikariProxyConnection@1631959070 wrapping com.mysql.cj.jdbc.ConnectionImpl@64355120] will not be managed by Spring
==>  Preparing: INSERT INTO dept ( id, name, deleted ) VALUES ( ?, ?, ? )
==> Parameters: 8858788c7b5f5dc28b78110ea1810de7(String), 总经办(String), false(Boolean)
<==    Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7573e12f]
1

删除

删除时,实际是执行update语句,将deleted设为true

@Test
public void testDeleteById() {
   
    int result = deptMapper.deleteById("8858788c7b5f5dc28b78110ea1810de7");
    System.out.println(result);
}

执行日志:

JDBC Connection [HikariProxyConnection@719146276 wrapping com.mysql.cj.jdbc.ConnectionImpl@3f93e4a8] will not be managed by Spring
==>  Preparing: UPDATE dept SET deleted=true WHERE id=? AND deleted=false
==> Parameters: 8858788c7b5f5dc28b78110ea1810de7(String)
<==    Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@70e02081]
1

查询

查询时,带上deleted = false的条件

@Test
public void testSelectById() {
   
    Dept dept = deptMapper.selectById("4b0e878b5bfc2f22f44f1a3691403116");
    System.out.println(dept);
}

执行日志:

JDBC Connection [HikariProxyConnection@987950392 wrapping com.mysql.cj.jdbc.ConnectionImpl@7f572c37] will not be managed by Spring
==>  Preparing: SELECT id,name,deleted,create_time,update_time FROM dept WHERE id=? AND deleted=false
==> Parameters: 4b0e878b5bfc2f22f44f1a3691403116(String)
<==    Columns: id, name, deleted, create_time, update_time
<==        Row: 4b0e878b5bfc2f22f44f1a3691403116, 研发部, 0, null, null
<==      Total: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5e4fa1da]
Dept{id='4b0e878b5bfc2f22f44f1a3691403116', name='研发部', deleted=false, createTime=null, updateTime=null}

上一篇:SpringBoot 全家桶 | MyBatisPlus(五)主键生成策略
下一篇:SpringBoot 全家桶 | MyBatisPlus(七)乐观锁

相关文章
|
16小时前
|
计算机视觉
关于MybatisPlus的一个逻辑删除的基本常识
昨日写的删除订单的接口, 发现一个问题差点打碎我的三观...
53 0
|
16小时前
|
测试技术 数据库
深入解析MyBatis-Plus中的逻辑删除功能及实例
深入解析MyBatis-Plus中的逻辑删除功能及实例
261 0
|
9月前
|
SQL
Mybatis-plus 自定义SQL注入器查询@TableLogic 逻辑删除后的数据
Mybatis-plus使用@TableLogic注解进行逻辑删除数据后,在某些场景下,又需要查询该数据时,又不想写SQL。 自定义Mybatis-plus的SQL注入器一劳永逸的解决该问题
262 0
|
16小时前
|
SQL API 数据库
MyBatisPlus-多记录操作及逻辑删除
MyBatisPlus-多记录操作及逻辑删除
100 0
|
16小时前
|
前端开发 Java 数据库连接
Mybatis-Plus 逻辑删除
Mybatis-Plus 逻辑删除
|
6月前
|
SQL
mybatis-plus逻辑删除简单实现
mybatis-plus逻辑删除简单实现
32 0
|
7月前
|
SQL 数据库
mybatisPlus之逻辑删除解读
mybatisPlus之逻辑删除解读
|
11月前
|
SQL 数据库 索引
CTO:半小时内处理好MyBatisPlus逻辑删除与唯一索引的兼容问题
需求背景 比如有张用户表,在插入或者更新数据的时候,我们需要 用户名称(username),不能重复。 我们首先考虑的是给该字段创建唯一索引
|
SQL 数据库
mybatis-plus逻辑删除
mybatis-plus逻辑删除
|
Java 数据库
mybatisplus逻辑删除
1.物理删除和逻辑删除 (1)物理删除:真实删除,将对应数据从数据库中删除,之后查询不到此条被删除的数据 (2)逻辑删除:假删除,将对应数据中代表是否被删除字段状态修改为“被删除状态”,之后在数据库中仍旧能看到此条数据的记录 2.逻辑删除的使用场景 (1)可以进行数据恢复 (2)有关联数据,不便删除
mybatisplus逻辑删除