原因一:缺少事务注解,底层mybatisplus的接口方法有事务

原因二:该服务器被限制访问要连接的数据库

原因三:乐观锁失效

  乐观锁由@version注解标注,有以下使用要求

  支持的数据类型只有:int、Integer、long、LonDate、Timestamp、LocalDateTime
  整数类型下 newVersion = oldVersion + 1
  newVersion 会回写到 entity 中
  仅支持 updateById(id) 与 update(entity, wrapper) 方法
  在 update(entity, wrapper) 方法下, wrapper 不能复用

拓展研究:

问题一、为什么每次都Creating a new SqlSession,会不会影响性能?

Creating a new SqlSession mybatis官方就是这么和spring整合的,SqlSession是对Connection的封装,Connection都在池里呢,没什么影响。

那个是信息,就是在一个数据库连接上,启动事务,创建一个对象来管理事务,就是在数据库连接上发出transaction.start,对象来记录相关信息。对性能影响很少

问题二、明明配置了事务,确提示事务没有交给spring管理,求解?

只有连接不是spring管理的(应该是应用服务器上建立的),实际上事务还是spring管理,报错还是会回滚。

乐观锁实现方式:

版本号

  • 取出记录时,获取当前version
  • 更新时,带上这个version
  • 执行更新时, set version = newVersion where version = oldVersion
  • 如果version不对,就更新失败

时间版本

  • 实现MetaObjectHandler拦截器,对要判断的时间字段进行拦截,
  • 时间字段加上对应注解 @TableField(value = "UPDATE_TIME",fill = FieldFill.UPDATE)
  • 取出记录时,获取当前time
  • 更新时,带上这个time
  • 执行更新时, set time = newTime where version = oldTime
  • 如果 time 不对,就更新失败

最新文章

  1. [LintCode] Longest Increasing Subsequence 最长递增子序列
  2. js中的 || && !!
  3. ECSHOP v2.7.3注入漏洞分析和修复
  4. JQuery拖拽排序
  5. MVC网址路由与生命周期
  6. SQL注入原理
  7. easyUI之window
  8. php 常用几个函数
  9. Nine Great Books about Information Visualization
  10. 【转载】深入浅出http请求
  11. c/c++ 重载运算符 标准库function的用法
  12. Windbg程序调试系列1-Mex扩展使用总结
  13. Python Scrapy 爬取煎蛋网妹子图实例(二)
  14. 《Python》进程收尾线程初识
  15. Component Interface相关面试题
  16. Ubuntu 14.04 DNS 配置
  17. django 接口
  18. 【BZOJ】【2200】【USACO 2011 Jan】道路和航线
  19. CF825F String Compression 解题报告
  20. 用仿ActionScript的语法来编写html5——第一篇,显示一张图片

热门文章

  1. 打卡node day06 ---登录和注册接口
  2. Java基础之注释
  3. ES6 新特性 ES6使用 超实用
  4. vue项目中如何使用markdown编辑器插件
  5. Path Manipulation安全漏洞处理方法
  6. 你不知道的JavaScript--作用域
  7. Python的入门学习之 Day 7——from“夜曲编程”
  8. 天龙八部<三联版>三
  9. 基于Face-Recognition的计算机人脸识别安全认证程序
  10. luogu 3676小清新数据结构题