mybatis3 批量操作问题

问题描述

@Overridepublic void batchInsert(List<T> list, Class<? extends SqlMapper<T>> mapper) {sessionTemplate = new SqlSessionTemplate(sqlSessionFactory, ExecutorType.BATCH);//SqlSession session = sqlSessionFactory.openSession(ExecutorType.BATCH,false);for(T vo : list){sessionTemplate.getMapper(mapper).insert(vo);}//session.commit();}service层的代码 //删除角色菜单权限 roleMenuDao.delete(list.get(0).getRoleId()); //删除角色操作权限 rolePermissionsDao.deleteByRoleId(map); //添加角色菜单权限 roleMenuServ.batchCreate(list, RoleMenuMapper.class);mybatis3 批量操作是报 Cannot change the ExecutorType when there is an existing transaction 异常如果给roleMenuServ.batchCreate方法做为一个新的事物处理<prop key="batchCreate">PROPAGATION_REQUIRES_NEW,-Exception</prop>报Lock wait timeout exceeded; try restarting transaction异常请问怎么解决? 问题补充:AngelAndAngel 写道

解决方案

你多操作的 不要用这种方式,事实上mybatis的批量操作效率不见得高多少,而你对事务的混乱反而影响程序的健壮性。
解决方案二:
这种多操作的你用最直接的方法, //删除角色菜单权限 roleMenuDao.delete(list.get(0).getRoleId()); //删除角色操作权限 rolePermissionsDao.deleteByRoleId(map); //添加角色菜单权限 roleMenuServ.batchCreate(list, RoleMenuMapper.class);这几个dao里面你都用sql来操作,统一事务,不然你的程序效果会很混乱。以后也会出现很多事务方面的问题。
解决方案三:
不能嵌套的 因为你的事务传播不支持这样,所以你得改一下。
解决方案四:
你的service层里面的代码是否嵌套了事务,lz检查一下看看。

时间: 2024-10-14 14:35:30

mybatis3 批量操作问题的相关文章

Mybatis3+Spring4+SpringMVC4 整合

   首先在整合这个框架的时候,想想其一般的步骤是怎样的,先有个步骤之后,不至于在后面的搞混了,这样在整合的时候也比较清晰些. 然后我们就细细的一步一步来整合. 1  创建一个Web项目.      2  导入Mybatis3.Spring4.SpringMVC4.连接数据库(我使用的数据库是mysql)的jar包.  我所用的包:     spring-websocket-4.2.0.RELEASE.jar   3  创建Mybatis3.Spring4.SpringMVC4.连接数据库的配置

Sybase批量操作(BCP)的设计和实现

本文主要讲述了Sybase数据库批量操作(BCP)的设计和实现,以及在开发过程中的关键点,为后续开发者提供了技术基础 一.前言 在项目研发过程中,需要开发一个数据库批量操作的动态链接库(DLL),以前的实现主要是程序中直接调用bcp.exe,这种方式由应用程序创建子进程,不好控制批量操作过程,失败跟踪难度比较大,因此想利用bcp.exe调用的函数来实现操作过程.本人通过分析bcp.exe程序,得到了批量操作的DB LIBRARY API函数,再查阅API函数的资料得以实现该动态链接库. 二.实现

excel不规则区域合并单元格的批量操作

虽说合并单元格是个给人惹麻烦的主,可是因为人家长得比较好,所以还是到处受欢迎的,比如下图中A列,看着就不太顺眼,如果改成D列那样,就受欢迎得多了.可是每个区域大小并不一致,一个一个合并十个八个还行,千个万个就太对不起鼠标同学了,要如何批量操作呢? 最后记得把多余的C列咔嚓了就可以了.效果如何呢?自己爬进单元格试下就知道了^_^ 另外,这一操作不仅限于2010版,2003版和2007版也同样适用,只是2003版的"转到"在菜单"编辑>定位>定位条件"里.

JS批量操作CSS属性详细解析

 这篇文章主要介绍了JS批量操作CSS属性.需要的朋友可以过来参考下,希望对大家有所帮助  代码如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server">     <title></title>     <style type="text/css">         .day         {      

WPS多文档标签编辑设置批量操作

  在使用WPS办公软件时,我们常常会同时打开多个文档进行比对会编辑,但是,一般的文档编辑软件默认情况下只能在一个窗口中打开,这可怎么办呢?不用担心,WPS办公软件就能够简单解决您的这个烦恼,一起来看看吧. 一.WPS多文档标签 这个设计大家都应该很熟悉了,现在很多浏览器都是采用这样的设计,浏览器厂商考虑到加大在流量网页时,有可能同时打开多个网页,而这样的标签设计,就不会占用有限的任务栏空间了,WPS Office 2012同样为用户考虑得很周到,因为有了文档标签,你再也不用在拥挤的任务栏艰难的

mybatis3.2.6整合spring4.0和springMVC4.0开发

1. 新建项目,导入jar包 在eclipse/myeclipse上新建一个web项目,导入如下图所示的jar包,关于jar包的整合资源可到http://download.csdn.net/detail/qwe6112071/9467007进行下载 如果使用了maven,则配置更为方便: <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- spri

Spring3整合Mybatis3+mybatis-spring1.x查询报错

问题描述 Spring3整合Mybatis3+mybatis-spring1.x查询报错 我在进行Spring(V:3.2.3.RELEASE)+mybatis(V:3.2.4)+mybatis-spring(V:1.1.1)整合.有一个ClassRoom班级类: //班级id private int classId; //班级编码 private String classCode; //班级名字 private String className; //所属学院 private College

maven项目spring3+mybatis3事务不回滚

问题描述 maven项目spring3+mybatis3事务不回滚 注:该项目的mapper和service均未注入到spring ,service中的mapper获取是用的spring上下文获取的,只有controller注入到spring中了. 问题:这种方式开发要怎样注入事务?使用spring事务拦截失效,不知道是不是我没配对,求D神指教 解决方案 解决方案二: http://blog.csdn.net/evankaka/article/details/45478007,看看这里,

noclassdeffounderror-spring4.0+mybatis3.3+tomcat8.0整合出的NoClassDefFoundError一个问题

问题描述 spring4.0+mybatis3.3+tomcat8.0整合出的NoClassDefFoundError一个问题 具体工程见如下地址: https://yunpan.cn/cr5AZCTwuI7pp 访问密码 e565 代码是我学习的demo,第一次做spring+mybatis的开发. 本来所有代码放在一个工程(参见附件的springMVC03_single.rar)运行都是ok的. 但是我把dao和pojo两块代码单独出一个工程后(参见附件的springMVC03_mutipr