mybatis的乐观锁是否有统一处理方法

dl348 2018-05-27 03:53:34
最近尝试使用mybatis和springboot。现在公司需要搭建一个架构:springboot + mybatis + Oracle。
目前遇到一个乐观锁的问题,面对乐观锁,mybatis是否有统一的处理方法,或者Oracle、springboot有方法处理。

目前的做法是:每条update语句都添加
update xxx
set
version = version +1
where version = #{version} and id = xx

但是这种方法受到了公司一致的差评~~上网看到有个大神自制的插件可以通过mybatis底层处理此问题,但是公司不赞成使用网上的非官方代码做jar包。

请问大家是如何处理乐观锁这个问题的呢?
...全文
1537 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
maradona1984 2018-05-28
  • 打赏
  • 举报
回复
mybatis的过滤器可以做到修改sql,解析sql就用druid的sql parser 然后在service上的方法加个aop(可以通过注解,比较灵活),在ThreadLocal里加上变量确认update是否需要乐观锁 还可以更进一步(这个你可以无视),如果没有更新到数据,抛出异常,aop捕获异常(这个要考虑对事务的影响,如果异常先被事务的aop捕获,那就存在蛋疼bug) 捕获异常然后重新执行方法 当然最简单的方法是,发现没更新到数据直接抛出异常
dl348 2018-05-28
  • 打赏
  • 举报
回复
顶一下,有没有大神能告知一下,遇到这种情况,一般如何处理?如果真的只能通过每条update 添加version相关的sql?

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧