乐观锁
主要用于解决丢失更新问题
乐观锁的实现
1、数据库表添加字段,作为乐观锁版本号
2、对应实体类添加版本号属性![](https://i-blog.csdnimg.cn/blog_migrate/8d5b5e50294fc519675a39781258e2b8.png)
3、配置乐观锁插件
//这是一个配置类 @Configuration @MapperScan("com.lei.mybatis_plus.mapper") public class MybatisPlusConfig { //乐观锁插件 @Bean public OptimisticLockerInterceptor optimisticLockerInterceptor(){ return new OptimisticLockerInterceptor(); } }
@Component public class MyMetaObjectHandler implements MetaObjectHandler { //使用mp实现添加这个操作,这个方法执行 @Override public void insertFill(MetaObject metaObject) { this.setFieldValByName("createTime",new Date(),metaObject); this.setFieldValByName("updateTime",new Date(),metaObject); this.setFieldValByName("version",1,metaObject); } //使用mp实现更新这个操作,这个方法执行 @Override public void updateFill(MetaObject metaObject) { this.setFieldValByName("updateTime",new Date(),metaObject); } }
4、测试乐观锁
//测试乐观锁,先查询,后更新,更新前version=1,更新后version=2 @Test public void OptimisticLockerTest(){ //根据id查询数据 User user=userMapper.selectById(1261993075279499265L); user.setName("喜之郎啊"); int i = userMapper.updateById(user); System.out.println(i); }