mybatis-plus 逻辑删除
mybatis-plus逻辑删除
- 首先说一下什么是物理删除----物理删除就是指把数据彻底从数据库删除掉,是彻底的删除干净
- 物理删除有个不好的地方就是直接将数据删除干净无法找回
- 逻辑删除就很人性化了----逻辑删除是mybatis-plus特有的属性主要是通过插件和特定的一个字段将其隐藏起来,并不是真正意义上的删除,它是可以恢复的
怎么实现的展示一波:
第一步
实体类
import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.util.Date;@Data
@NoArgsConstructor
@AllArgsConstructor
public class User5 {@TableId(type = IdType.ID_WORKER)//数字类型的id使用,当类型为Long时默认使用,生成19位的Id值,private String id;private String name;private Integer age;private String email;@TableField(fill = FieldFill.INSERT) //进行添加操作时有值private Date createTime;@TableField(fill = FieldFill.INSERT_UPDATE) //进行添加和修改操作时有值private Date updateTime;//添加version属性,注意添加@Version注解//同时使用TableField设置初始值为1@TableField(fill = FieldFill.INSERT_UPDATE)@Versionprivate Integer version;//添加删除标记@TableLogic@TableField(fill = FieldFill.INSERT)//设置初始值private Integer deleted;public User5(String name, Integer age, String email) {this.name = name;this.age = age;this.email = email;}
}
配置工具类 (需要配置逻辑删除插件)
package cn.com.zzn.config;import com.baomidou.mybatisplus.core.injector.ISqlInjector;
import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector;
import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;@MapperScan("cn.com.zzn.mapper")//添加扫描注解,写入mapper的路径,否则会找不到接口并报错
@Configuration
public class MybatisPlusConfig {//乐观锁插件@Beanpublic OptimisticLockerInterceptor OptimisticLockerInterceptor(){return new OptimisticLockerInterceptor();}/*
Sql性能分析插件
开发环境使用,上线项目不推荐使用*/@Bean@Profile({"dev","test"})//设置使用环境public PerformanceInterceptor performanceInterceptor(){PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();performanceInterceptor.setMaxTime(1000);//ms值,超过此处的毫秒值则不执行performanceInterceptor.setFormat(true);return performanceInterceptor;}
// 逻辑删除插件@Beanpublic ISqlInjector sqlInjector(){return new LogicSqlInjector();}}
还需配置application.properties
#com.mysql.cj.jdbc.Driver:springBoot2.1以上要加上cj
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#serverTimezone=GMT%2B8:添加时区
spring.datasource.url=jdbc:mysql://localhost:3306/db01?serverTimezone=GMT%2B8
spring.datasource.username=db01
spring.datasource.password=db01#mybatis日志:添加后可以查看执行的sql语句
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
#设置当前环境:dev;test;prod
spring.profiles.active=dev
#设置逻辑删除的值:1-已删除;0-没有删除
#可自行设置值,但是一般不设置,1和0为默认值
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0
mybatis-plus 逻辑删除相关推荐
- Mybatis Plus逻辑删除
1.首先在实体类中的删除字段添加注解 @TableLogic @TableField(deleteFiled) private String deleteFiled; 2.在配置文件中设置: myba ...
- mybatis 乐观锁和逻辑删除
本篇介绍easymybatis如配置乐观锁和逻辑删除. 乐观锁 easymybatis提供的乐观锁使用方式跟JPA一样,使用@Version注解来实现.即:数据库增加一个int或long类型字段ver ...
- mybatis 乐观锁_MybatisPlus新特性之逻辑删除、乐观锁、自动填充
MP特性 公共字段的自动填充功能 自动更新全局属性,比如创建的时间修改的时间,这样就不用每执行一次插入更新操作都带上一个set大大节省了很多效率,从而也避免为了因为时间格式的不统一问题. 为了输出日志 ...
- MyBatis-Plus 乐观锁 防止超卖、逻辑删除、自动填充、Id自增
MyBatis-Plus 乐观锁 防止超卖.逻辑删除.自动填充 Day3 前面的简单的讲了一下mybatis-plus的使用 当然有很多不足 我写博客就是想促进大家一起学习 也想让这些内容更简单一些. ...
- 浅谈:MyBatis-Plus的CRUD与乐观锁,分页插件,逻辑删除
浅谈:MyBatis-Plus的CRUD与乐观锁,分页插件,逻辑删除 MyBatis-Plus官方文档连接 什么是MyBatis-Plus 请点击上面官方文档查看 代码演示:代码注释为功能详细解释 数 ...
- MybatisPlus实现逻辑删除
delete 根据id删除记录 //查询user表所有数据 @Test public void findAll() {List<User> users = userMapper.selec ...
- mybatis-plus根据多个字段排序_Mybatis Plus学习笔记(逻辑删除/动态填充/常用插件)...
一.逻辑删除 1.逻辑删除后,将不会被查询出来. mybatis 2.查询中排除逻辑删除字段 在Wrappers.<User>lambdaQuery().eq(User::getIsDel ...
- ssm框架逻辑删除mysql_MybatisPlus--CRUD接口及主键增长策略、自动填充、乐观锁更新数据...
目录 一.insert 1.插入操作 2.主键策略 二.update 1.根据Id更新操作 2.自动填充 3.乐观锁 三.select 1.根据id查询记录 2.通过多个id批量查询 3.简单的条件查 ...
- spring boot项目自定义数据源,mybatisplus分页、逻辑删除无效解决方法
Spring Boot项目中数据源的配置可以通过两种方式实现: 1.application.yml或者application.properties配置 2.注入DataSource及SqlSessio ...
最新文章
- 页面导航的基础与深入
- containerd设置上网代理
- 程序员懂算法玩“淮安掼蛋”是否更有优势?
- 构建新模式java_Nacos 1.3.0 来了,基于全新内核构建!
- 简单扫一下官文 - 11G Release2 新特性
- QString string int double char 相互转化
- android之Intent的七大属性
- C++ 虚拟继承与虚基类
- 1041 Be Unique (20 分) 水题
- oracle怎么查询关键字,Oracle 搜索关键字
- trivial、standard layout、POD和literal类型解析
- 实施ERP系统后需要维护吗?
- 普通打印机如何才能实现双面打印呢
- 解决mysql ERROR 2002 (HY000): Can't connect to local MySQL server through socket错误的方法
- 【CISSP备考笔记】第2章:资产安全
- linux分区格式化命令
- 概论_第2章_一维均匀分布的概率公式
- 输入一个url到呈现一个页面,到底发生了啥?
- 网络与信息安全产品(一)
- php实现第三方登录
热门文章
- 看!这组灵感超赞的创意海报!值得设计师收藏
- 看完这些美食海报,你是不是又有灵感了?
- 菜单黑暗模式UI动画素材模板
- 处理器指令编码可重定义的方法_RISC-V学习笔记1 《基于FPGA与RISC-V的嵌入式系统设计》第3章 RISC-V指令集...
- everything服务器网页设置,Everything HTTP 服务器设置
- 手绘时钟的设计与实现
- CentOS RPM源镜像源(国内+国外)
- slab 着色如何最大限度地利用 Cache Lines 或 Cache Rows?
- Linux内核安装-5.9.1为例
- ZeroMQ简介:一种高性能的异步消息传递库