mybatis plus逻辑删除

一 物理删除

1.1 application.yml文件

html 复制代码
server:
  port: 8087
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/business_schema?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: root
  redis:
    host: localhost
    port: 6379
    database: 0
    lettuce:
      pool:
        max-active: 100  # 最大连接数
        max-idle: 50     # 最大空闲连接数
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

1.2 实体类

java 复制代码
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("book")
public class Book {
    private Integer id;
    private String bookName;
    private String bookType;
    private Integer isDeleted;
}

1.3 接口

java 复制代码
@RestController
@RequestMapping("/mango")
public class BookController {

    @Autowired
    private IBookService bookService;

    @GetMapping("/book/list")
    public List<Book> queryBookList() {
        return bookService.queryBookList();
    }

    @GetMapping("/removeById")
    private void removeById(@RequestParam Long id) {
        bookService.removeById(id);
    }

}

1.4 执行SQL

html 复制代码
==>  Preparing: DELETE FROM book WHERE id=?
==> Parameters: 14(Long)
<==    Updates: 1

这样执行物理删除,会把数据真正的删除掉

二 逻辑删除(注解)

2.1 数据表

数据表设置一个逻辑删除is_deleted字段,并设置默认值0

2.2 application.yml文件

html 复制代码
server:
  port: 8087
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/business_schema?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: root
  redis:
    host: localhost
    port: 6379
    database: 0
    lettuce:
      pool:
        max-active: 100  # 最大连接数
        max-idle: 50     # 最大空闲连接数
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

2.3 实体类

java 复制代码
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("book")
public class Book {
    private Integer id;
    private String bookName;
    private String bookType;
    @TableLogic
    private Integer isDeleted;
}

实体类的isDeleted字段添加com.baomidou.mybatisplus.annotation.TableLogic注解

2.4 接口

java 复制代码
@RestController
@RequestMapping("/mango")
public class BookController {

    @Autowired
    private IBookService bookService;

    @GetMapping("/book/list")
    public List<Book> queryBookList() {
        return bookService.queryBookList();
    }

    @GetMapping("/removeById")
    private void removeById(@RequestParam Long id) {
        bookService.removeById(id);
    }

}

2.5 执行SQL

2.5.1 执行删除接口

html 复制代码
==>  Preparing: UPDATE book SET is_deleted=1 WHERE id=? AND is_deleted=0
==> Parameters: 14(Long)
<==    Updates: 1

执行的是update语句,修改的是is_deleted字段

2.5.2 执行查询接口

html 复制代码
==>  Preparing: SELECT id,book_name,book_type,is_deleted FROM book WHERE is_deleted=0
==> Parameters: 
<==    Columns: id, book_name, book_type, is_deleted
<==        Row: 14, bbc, zn, 0
<==      Total: 1

执行查询SQL时,会在where条件后面默认添加is_deleted=0这个条件

三 逻辑删除(配置文件)

3.1 数据表

数据表设置一个逻辑删除is_deleted字段,并设置默认值0

3.2 application.yml文件

html 复制代码
server:
  port: 8087
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/business_schema?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: root
  redis:
    host: localhost
    port: 6379
    database: 0
    lettuce:
      pool:
        max-active: 100  # 最大连接数
        max-idle: 50     # 最大空闲连接数
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  global-config:
    db-config:
      logic-delete-field: isDeleted # 全局逻辑删除字段名
      logic-delete-value: 1       # 逻辑已删除值
      logic-not-delete-value: 0   # 逻辑未删除值

配置文件中添加mybatis-plus.global-config.db-config相关配置,指定全局逻辑删除字段名,逻辑已删除值和逻辑未删除值

3.3 实体类

java 复制代码
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("book")
public class Book {
    private Integer id;
    private String bookName;
    private String bookType;
    private Integer isDeleted;
}

3.4 接口

java 复制代码
@RestController
@RequestMapping("/mango")
public class BookController {

    @Autowired
    private IBookService bookService;

    @GetMapping("/book/list")
    public List<Book> queryBookList() {
        return bookService.queryBookList();
    }

    @GetMapping("/removeById")
    private void removeById(@RequestParam Long id) {
        bookService.removeById(id);
    }

}

3.5 执行SQL

3.5.1 执行删除接口

html 复制代码
==>  Preparing: UPDATE book SET is_deleted=1 WHERE id=? AND is_deleted=0
==> Parameters: 14(Long)
<==    Updates: 1

执行的是update语句,修改的是is_deleted字段

3.5.2 执行查询接口

html 复制代码
==>  Preparing: SELECT id,book_name,book_type,is_deleted FROM book WHERE is_deleted=0
==> Parameters: 
<==    Columns: id, book_name, book_type, is_deleted
<==        Row: 14, bbc, zn, 0
<==      Total: 1

执行查询SQL时,会在where条件后面默认添加is_deleted=0这个条件

相关推荐
程序员JerrySUN4 小时前
Jetson Edge AI 实战01:Nano、Xavier、Orin 怎么选?Jetson 硬件选型详解【视频讲解】
java·数据库·redis·安全·mybatis
linmengmeng_13147 小时前
【总结】MyBatis-Plus批量插入与清表的正确姿势
java·spring boot·mysql·mybatis
vx_BS8133012 小时前
【项目编号:project51381】Spring Boot 婚纱摄影管理系统:套餐预约、在线咨询、支付与客片展示的一站式业务实现
java·spring boot·eclipse·tomcat·mybatis
jaysee-sjc2 天前
【苍穹外卖】Day01:从零认识企业级项目开发
java·开发语言·数据库·mysql·spring·intellij-idea·mybatis
程序猿乐锅2 天前
【黑马点评 | 第二篇】Redis 缓存更新策略与商铺缓存实现
java·网络·redis·spring·mybatis
萧瑟余晖2 天前
MyBatis 核心原理详解
架构·mybatis
MZA6662 天前
实战:基于 XXL-JOB + 策略模式 + Nacos 配置化的 CSV 导出任务系统设计
java·spring boot·mybatis
干到60岁退休的码农4 天前
15.创建获取用户接口与JWT认证器
java·spring boot·mybatis
干到60岁退休的码农5 天前
16.过滤器中处理异常响应返回
java·spring boot·mybatis
敲代码的嘎仔6 天前
互动问答系统实战:两级评论模型、ES 搜索集成、Caffeine 多级缓存全记录
java·开发语言·数据库·elasticsearch·缓存·mybatis·高并发