我没试过若依的mp版,我自己改的,若依本身有mybatis,我加入了mp之后,想用乐观锁,需要在配置中手动写入配置:
官方文档的bean要加入
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return mybatisPlusInterceptor;
}
自己配置还得在MybatisSqlSessionFactoryBean sessionFactory加入:
sessionFactory.setPlugins(new Interceptor[] { mybatisPlusInterceptor() });
实体字段上加@Version
ShopStock ss = null;
int i = 0;
do {
ss = shopStockService
.getOne(new QueryWrapper<ShopStock>().eq("shop_id", shopId).eq("goods_id", item.getGoodsId()));
ss.setQty(ss.getQty() + item.getQty());
ss.setOpQty(ss.getOpQty() - item.getQty());
if (++i > 5) {
throw new RuntimeException(String.format("更新尝试超过5次,更新失败"));
}
// 乐观锁更新
} while (!shopStockService.updateById(ss));
return true;
如果超过5次都没更新成功,那同时操作的人太多了,就失败吧.大型系统应该放mq
网友评论