来自官网的配置,这里直接复制

第一步 添加全局配置

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)

第二步、在实体类上添加@TableLogic注解

@TableLogic
private Integer deleted;//对应的实体字段,实体字段需要根据数据库字段命名

这样就会在预编译sql中自动给这个字段设置的值就是全局配置设置的值

当然也可以设置局部生效 单个实体生效(不推荐)只需要在注解中添加


完整的实体示例

import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.time.LocalDateTime;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable {

  private long id;
  private String name;
  private long age;
  private String email;
  private long managerId;
  private LocalDateTime createTime;
  private LocalDateTime updateTime;
  private long version;
  
  @TableLogic(value = "0",delval = "1") //value表示逻辑未删除值,delval表示逻辑删除设置的值
  private long deleted;
  
}

当然不建议这样操作,一般直接@TableLogic然后通过全局设置即可

测试代码,其中的传入的是主键 刘红雨的id

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;
import top.huashengshu.demo.dao.UserMapper;

@SpringBootTest
@RunWith(SpringRunner.class)
class DemoApplicationTest {

    @Autowired
    UserMapper userMapper;

    @Test
    public void deleteTest(){
        int rows = userMapper.deleteById(1094592041087729666L);
        System.out.println("影响行数:"+rows);
    }

}

执行结果:

MybatisPlus逻辑删除功能_字段名

查看表中数据:

MybatisPlus逻辑删除功能_spring_02