25常用注解总结

1、@Version
标记乐观锁,通过version字段来保证数据的安全性,当修改数据的时候,会以version作为条件,当条件成立的时候才会修改成功.
线程1:update ... set version=2 where version = 1
线程2:update ... set version=2 where version = 1

(1)数据库表添加version字段,默认值为1

(2)实体类添加version成员变量,并且添加@Version

(3)注册一个配置类

@Configuration
public class MyBatisPlusConfig {

    /*
    程序会自己调用这个方法,返回一个OptimisticLockerInterceptor,然后通过Bean注解
    将OptimisticLockerInterceptor注入到IOC容器中
     */
    @Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor(){
        return new OptimisticLockerInterceptor();
    }
}

(4)测试

(5)测试

保证了只有一个被执行

2、@EnumValue
一、通过枚举类注解,将数据库字段映射成实体类的枚举类型成员变量
(1)数据库添加字段status状态,默认为1
(2)创建枚举类型

(3)实体类添加枚举类型的变量

(4)配置枚举包的映射

(5)测试

二、通过实现接口的方式,将数据库字段映射成实体类的枚举类型成员变量
(1)数据库添加parentage字段

(2)创建枚举类型,实现接口

(3)实体类创建枚举类型

(4)测试(查询所有)

3、@TableLogic
映射逻辑删除,并不会真正的删除数据
(1)数据表添加del字段(delete字段是关键字,执行时会报错),0表示未删除,1表示删除
(2)实体类添加注解

(3)在application.yml中添加配置

(4)测试

执行前的数据库:

执行后的数据库:

当我们再执行查询所有的语句时,并不会将其查出来

【为什么会这样?实现原理】
这是因为我们添加注解后,每次的查询条件改变了

posted @ 2021-09-18 20:01  不是孩子了  阅读(66)  评论(0)    收藏  举报