mybatisplus乐观锁
乐观锁插件
1) com.baomidou.mybatisplus.plugins.OptimisticLockerInterceptor 注册乐观锁插件
2) 如果想实现如下需求: 当要更新一条记录的时候,希望这条记录没有被别人更新,确保当前只有一个人在操作
3) 乐观锁的实现原理:
取出记录时,获取当前 version 2
更新时,带上这个 version 2
执行更新时, set version = yourVersion+1 where version = yourVersion
如果 version 不对,就更新失败
4) @Version 用于注解实体字段,必须要有,数据库中也应有对应的字段
@RunWith(value = SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:applicationContext.xml") public class LeGuanLock { @Autowired private EmployeeMapper mapper; @Test public void testName() throws Exception { /** * UPDATE tbl_employee SET last_name=?, gender=?, * age=?, version=? WHERE id=? and version=? */ //更新操作 假设这个实体类是我们要更新到数据库的数据 Employee employee = new Employee(); employee.setId(4); employee.setLastName("乐观锁"); employee.setGender("1"); employee.setAge(29); /* * 添加@Version注解字段 * spring配置文件中注册乐观锁插件 * 假如有人手速比我们快,先更新,这时version不是2了,假设是3 * 更新就会失败 */ employee.setVersion(2); Integer r = mapper.updateById(employee); System.out.println(r); } }
实体类中
@Version private Integer version;