修改成功,可以看到version 变成了1。最后,模拟下并发更新,乐观锁更新失败的情况:按照乐观锁的原理,user2是可以更新成功的,也就是name会修改为“大周4”,version会加1。user因为前后拿到的版本号不对,更新失败。结果符合预期,我们也可以看下mybatis的日志,进一步了解一下:可以看到上面首先是2个查询,查询到...
2.实体类中对应此字段添加@Version注解
// 测试乐观锁 @Test void testOptimisticLocker() { User user = userMapper.selectById(1342502561945915393L); user.setName("大周2"); userMapper.updateById(user); }修改成功,可以看到version 变成了1。最后,模拟下并发更新,乐观锁更新失败的情况:// 测试乐观锁-失败 @Test ...
// 测试乐观锁@Testvoid testOptimisticLocker() {User user = userMapper.selectById(1342502561945915393L);user.setName("大周2");userMapper.updateById(user);} 修改成功,可以看到version 变成了1。 最后,模拟下并发更新,乐观锁更新失败的情况: // 测试乐观锁-失败@Testvoid testOptimisticLockerFailed() {User...
按照乐观锁的原理,user2是可以更新成功的,也就是name会修改为“大周4”,version会加1。user因为前后拿到的版本号不对,更新失败。 结果符合预期,我们也可以看下mybatis的日志,进一步了解一下: 可以看到上面首先是2个查询,查询到的version都是1。 接着,第一个执行update语句的时候,where条件中version=1,可以找到数...
按照乐观锁的原理,user2是可以更新成功的,也就是name会修改为“大周4”,version会加1。user因为前后拿到的版本号不对,更新失败。 结果符合预期,我们也可以看下mybatis的日志,进一步了解一下: 可以看到上面首先是2个查询,查询到的version都是1。 接着,第一个执行update语句的时候,where条件中version=1,可以找到数...
乐观锁的实现,通过增加一个字段,比如version,来记录每次的更新。 查询数据的时候带出version的值,执行更新的时候,会再去比较version,如果不一致,就更新失败。 还是用之前的user表,增加了新的字段 version 。 1.在实体类里增加对于的字段,并且加上自动填充(你也可以每次手动填充) ...