mybatisplus悲观锁实现
时间: 2023-08-29 18:12:48 浏览: 135
mybatis-plus基础功能实现
MyBatis Plus的悲观锁实现方式有两种:
1. 通过select ... for update语句实现悲观锁
```java
// selectForUpdate方法会在查询时加上FOR UPDATE语句,使查询变成悲观锁
User user = userMapper.selectForUpdate(new QueryWrapper<User>().eq("id", 1));
user.setName("newName");
userMapper.updateById(user);
```
2. 通过update ... where ... for update语句实现悲观锁
```java
// update方法会在更新时加上WHERE语句,使更新变成悲观锁
int result = userMapper.update(new User().setName("newName"),
new UpdateWrapper<User>().eq("id", 1).last("FOR UPDATE"));
```
这两种方式的区别在于,第一种方式是在查询时加上FOR UPDATE语句,锁定整个查询结果集,第二种方式是在更新时加上WHERE语句,锁定符合条件的记录。一般来说,第二种方式更加灵活,可以针对需要更新的记录进行锁定,而不是锁定整个查询结果集。
阅读全文