mybatis update数据时无异常但没更新成功;update异常时如数据超出大小限制,造成死锁
没更新的问题原因:
sqlSession.commit();
没执行commit,但官方文档里有这样的描述:“默认情况下 MyBatis 不会自动提交事务,除非它侦测到有插入、更新或删除操作改变了数据库。”
源码:
<update id="updateTest" parameterType="cn.td.user.TestModel"> //TestModel是一个JavaBean
update test_table set test_case_suc_num = #{test_case_suc_num} where test_name = #{test_name} </update>
public void updateAllInfo(List<TestModel> list) throws IOException{
SqlSessionFactory sqlSessionFactory = getSqlFactory();
SqlSession sqlSession = sqlSessionFactory.openSession();
for(TestModel testModel : list){
System.out.println(testModel);
sqlSession.update("cn.td.dao.updatetest",testModel);
sqlSession.commit();
}
sqlSession.close();
}
以上的java代码中update异常会造成 数据库死锁,导致下次无法正常更新。
死锁的概念就是类似git中的lock,操作残留 或者 互斥。
解决办法:
public void updateAllInfo(List<TestModel> list) throws IOException{
SqlSessionFactory sqlSessionFactory = getSqlFactory();
SqlSession sqlSession = sqlSessionFactory.openSession();
for(TestModel testModel : list){
System.out.println(testModel);
try {
sqlSession.update("cn.td.dao.updatetest",testModel);
} catch (Exception e) {
sqlSession.rollback();
e.printStackTrace();
}
sqlSession.commit();
}
sqlSession.close();
}
事务回滚。
mybatis update数据时无异常但没更新成功;update异常时如数据超出大小限制,造成死锁的更多相关文章
- Hibernate 批量update数据时,怎么样做可以回滚,
Hibernate 批量update数据时,怎么样做可以回滚, 1.serviceManagerDaoImpl代码里对异常不进行try,catch抛出, 2.或者抛出throw new Runtime ...
- VC++大数据量绘图时无闪烁刷屏技术实现(我的理解是,在内存上作画,然后手动显示,而不再直接需要经过WM_PAINT来处理了)
http://hantayi.blog.51cto.com/1100843/383578 引言 当我们需要在用户区显示一些图形时,先把图形在客户区画上,虽然已经画好但此时我们还无法看到,还要通过 程序 ...
- tk.mybatis通用插件updateByPrimaryKeySelective无法自动更新ON UPDATE CURRENT_TIMESTAMP列的解决办法
tk.mybatis是一个很好用的通用插件,把CRUD这些基本的数据操作全都用动态SQL语句自动生成了,mapper和xml里十分清爽,但是昨天发现有一个小坑,记录在此: 有一张表,结构如下(已经简化 ...
- SpringBoot:Mybatis + Druid 数据访问
西部开源-秦疆老师:基于SpringBoot 2.1.7 的博客教程 秦老师交流Q群号: 664386224 未授权禁止转载!编辑不易 , 转发请注明出处!防君子不防小人,共勉! 简介 对于数据访问层 ...
- mybatis ---- 实现数据的增删改查
前面介绍了接口方式的编程,需要注意的是:在book.xml文件中,<mapper namespace="com.mybatis.dao.IBookDao"> ,命名空间 ...
- MyBatis从入门到精通(第2章):MyBatis XML方式的基本用法【insert用法、update用法、delete用法】
2.4 insert 用法 2.4.1 简单的 insert方法 在接口 UserMapper.java 中添加如下方法. /** * 新增用户 * @param sysUser * @retur ...
- MyBatis框架——mybatis插入数据返回主键(mysql、oracle)
向数据库中插入数据时,大多数情况都会使用自增列或者UUID做为主键.主键的值都是插入之前无法知道的,但很多情况下我们在插入数据后需要使用刚刚插入数据的主键,比如向两张关联表A.B中插入数据(A的主键是 ...
- ADO.NET 实体数据模型 异常-“序列化类型为 XX 的对象时检测到循环引用”
发生异常的代码如下: 1: public JsonResult GetSaleByNo1(string id) 2: { 3: SaleMvcUI.Helper.saleDBEntities sale ...
- Mybatis插入数据后返回主键id
有时候使用mybatis插入数据后,需要用到记录在数据库中的自增id,可以利用keyProperty来返回,赋值给实体类中的指定字段. 单条记录插入并返回 First, if your databas ...
随机推荐
- 【非原创】ISBN码
#include<stdio.h>int main(void){ char a[14],mod[12]="0123456789X"; #include <stdi ...
- 002---rest_framework认证组件
rest_framework认证组件 问题:有些API,需要用户登录才能访问,有些无需登录就能访问. 解决: a. 创建两个模型类:UserInfo---OneToOne---UsetToken b. ...
- PMP考试通过
经过3个月的努力,终于在10月8号,过完国庆假期,得知考试通过.虽然没有得到5A,只有4A,心也算落下了.备考的过程中,通过学习小组讨论,互相交流,辅导. 自己也对学习的知识加深印象.总结一下整个学习 ...
- 20155338 2016-2017-2《Java程序设计》第1周学习总结
20155338 2016-2017-2<Java程序设计>第1周学习总结 了解成绩构成 成绩构成:100分=翻转课堂考核12次(512 = 60)+ 实验5次(3 5 =15)+ 团队项 ...
- bzoj1901&zoj2112&cogs257 Dynamic Rankings(动态排名系统)
bzoj1901&zoj2112&cogs257 Dynamic Rankings(动态排名系统) cogs zoj bzoj-权限 题解 bzoj和zoj都是骗访问量的233,我没有 ...
- hive bug
SHELL$ hive -S -e “set” | grep warehouse hive.metastore.warehouse.dir=/user/hive/warehouse hive.ware ...
- Struts 2(一):初识Struts
[很久以前的笔记,后续继续完善] 在了解Struts 2框架之前,首先了解一下Model 1和Model 2架构,以及它们的优缺点. 1.1 Model 1架构模式 Model 1的核心是JSP文件, ...
- C# List<string> 的Contains方法 是区分大小写的
List<string> 的Contains 是区分大小写的 代码: List<string> test = new List<string>(); test.A ...
- 《图解 HTTP 》阅读 —— 第三章
第3章 HTTP 报文内的 HTTP 信息 用于 HTTP 协议交互的信息称为 HTTP 报文:请求报文和响应报文 HTTP 在传输数据时通过编码可以提升速率,能有效的处理大量数据,但是会消耗更多的C ...
- PHP性能优化 -理论篇
什么情况下,遇到了PHP性能问题? 1 PHP语法使用的不恰当 2 使用PHP语言做不了它不擅长做的事 3 用php语言连接的服务不给力 4 PHP自身的短板 5 我也不 ...