什么是乐观锁?
每次去拿数据的时候都认为别人不会修改,更新的时候会判断是别人是否回去更新数据,通过版本来判断,如果数据被修改了就拒绝更新。
Mybatis Plus里面自带一个插件,可以帮我们轻松实现乐观锁
使用方式:
1、需要在数据库表创建version字段,类型为int
CREATE TABLE `banner` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `img` varchar(524) DEFAULT NULL COMMENT '图片', `url` varchar(524) DEFAULT NULL COMMENT '跳转地址', `version` int(11) DEFAULT '1' COMMENT '乐观锁版本号' PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb4;
2、创建实体类,增加version属性注解
@Version private Integer version;
3、配置乐观锁插件
@Configuration public class MybatisPlusPageConfig { /** * 新的分页插件(推荐) */ @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); //分页插件 interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); //乐观锁插件 interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor()); return interceptor; } }
4、测试使用,当修改version对象版本号的数据记录,乐观锁自动生效
@Test public void testUpdaate(){ Banner banner = new Banner(); banner.setUrl("http://baidu.com"); banner.setId(3); banner.setVersion(2); //对应的版本号 log.info("修改结果:{}",bannerDao.updateById(bannerDO)); }