mybatis plus乐观锁
给实体字段添加@Version注解,数据库表中添加version字段
注意:
- 支持的数据类型只有: int,Integer,long,Long,Date,Timestamp,LocalDateTime
- 整数类型下
newVersion = oldVersion + 1
newVersion
会回写到entity
中- 仅支持
updateById(id)
与update(entity, wrapper)
方法 - 在
update(entity, wrapper)
方法下,wrapper
不能复用!!!
@Data
@TableName("spider_process_monitor")
public class QueryProcessPojo {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@TableField("project_name")
private String projectName;
@TableField("is_disabled")
private Integer disabled;
@TableField("last_updated")
private Date lastUpdated;
@Version
private Integer version;
}
配置类里注册插件OptimisticLockerInnerInterceptor
这里使用
MybatisPlusInterceptor
是因为3.4.0版本以后,其他方法都被弃用,强行使用会报错
@Configuration
@EnableTransactionManagement
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 分页插件
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
// 乐观锁插件
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return interceptor;
}
}
使用乐观锁
注意:
必须去数据库查询一下再更新,否则乐观锁不生效,重要!,重要!,重要!
public Integer disableProject(String projectName, Integer disabled) {
// 必须去数据库查询一下,否则乐观锁不生效
QueryProcessPojo queryProcessPojo = this.getProjectByName(projectName);
if (projectName==null){
return 0;
}
return mapper.updateById(queryProcessPojo);
}
你要是觉得写的还不错,就点个关注,可以评论区留下足迹,以后方便查看.
你要是觉得写的很辣鸡,评论区欢迎来对线!
欢迎转载!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY