意图
- 当要更新一条记录的时候,希望这条记录没有被别人更新
乐观锁实现方式
- 取出记录时,获取当前version
- 更新时,带上这个version
- 执行更新时, set version = newVersion where version = oldVersion
- 如果version不对,就更新失败
主要适用场景
- 商品锁库存
- 电子券领取
- 等等
乐观锁插件
- 集成了MybatisPlus乐观锁插件,直接使用即可 参考:https://mybatis.plus/guide/optimistic-locker-plugin.html#%E4%B8%BB%E8%A6%81%E9%80%82%E7%94%A8%E5%9C%BA%E6%99%AF
使用步骤
- 注解实体字段@Version,数据库添加该字段
@Version
private Integer version;
- 代码逻辑
if(!goodsInfoService.updateById(goodsInfo)){
throw new RuntimeException("请重新下单");
}