最近在研究springmvc和mybatis,自己搭了一个工程,今天学到spring的事务碰到个问题,
public void ajaxAdd(@RequestBody UserInfo userInfo,
HttpServletRequest request, HttpServletResponse response) {
String msg;
try {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
msg = "";
addUser();
userInfo.setName("据了解拉进来框架了框架了控件凉快将离开将凉快将离开进口量极乐空间凉快将离开计划");
userInfoService.insert(userInfo);
// userInfoService.insert(userInfo);
msg = "ok";
} catch (Exception e) {
log.error("", e);
msg = "no";
}
// userInfo.setName("撒旦法");
// userInfoService.insert(userInfo);
try {
PrintWriter out = response.getWriter();
out.write(msg);
out.flush();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void addUser() {
User user = new User();
user.setId(2L);
user.setName("ceshi mingc ");
user.setPassword("111");
userService.addUser(user);
}
这个是在control中的一个方法,在这个方法中我要操作两张表,addUser()方法是向第一张表中添加数据,userInfoService.insert(userInfo);是向第二张表中添加数据,我故意让第二次操作出错,想理解一下spring的事务回滚,可是弄了一下午没弄成功,太水了。
哪位高手给指点指点?小弟不剩感激!
问题补充:配置文件:
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="writeDataSource" />
</bean>
<!-- spring aop事务配置 -->
<aop:config>
<aop:pointcut id="serviceOperation" expression="execution(* com.haolw.*.service.*(..))" />
<aop:advisor pointcut-ref="serviceOperation" advice-ref="txAdvice" />
</aop:config>
<!--启动spring注解功能 -->
<tx:annotation-driven transaction-manager="transactionManager" />
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="update*" propagation="REQUIRED" rollback-for="Throwable"/>
<tx:method name="save*" propagation="REQUIRED" rollback-for="Throwable"/>
<tx:method name="add*" propagation="REQUIRED" rollback-for="Throwable"/>
<tx:method name="insert*" propagation="REQUIRED" rollback-for="Throwable"/>
<!-- <tx:method name="do*" propagation="REQUIRED" /> -->
<tx:method name="del*" propagation="REQUIRED" rollback-for="Throwable"/>
<tx:method name="remove*" propagation="REQUIRED" rollback-for="Throwable"/>
<tx:method name="get*" read-only="true" />
<tx:method name="query*" read-only="true" />
<tx:method name="find*" read-only="true" />
<tx:method name="*" />
</tx:attributes>
</tx:advice>
<context:component-scan base-package="com.haolw" use-default-filters="false">
<!--将Controller的注解排除掉 -->
<context:exclude-filter type="annotation"
expression="org.springframework.stereotype.Controller" />
</context:component-scan>
springMVC-servlet.xml
<!-- 注解模式 -->
<context:component-scan base-package="com.haolw"
use-default-filters="false">
<context:include-filter type="annotation"
expression="org.springframework.stereotype.Controller" />
<context:exclude-filter type="annotation"
expression="org.springframework.stereotype.Service" />
</context:component-scan>
我用的是springmvc和mybatis
相关推荐
springMVC使用注解,事务不失效 直接导入myeclipse,在mysql的test数据库中新建个user表、字段属性如下 username varchar 20 userpwd varchar 20
springmvc事务配置到controller.zip
springmvc事务配置在service
spring3.X集成mybatis例子包涵事务管理,非常有用的例子
基于maven创建的SpringMVC项目,使用三种方式实现了Spring对业务层的管理,包括编码方式,xml传统配置方式和基于aop的xml配置方式
Spring+SpringMVC+Mybatis框架结合mysql,包含事务管理
Annotation AOP SpringMVC 事务管理 SpringMVC实现一个完整的项目
springMVC+MYbatis框架搭建与事务管理
一、 XML,使用tx标签配置拦截器实现事务 一、 Annotation方式 以下所使用环境为Spring4.0.3、Hibernate4.3.5
数据库事务和隔离级别
主要介绍了Spring+SpringMVC配置事务管理无效原因及解决办法详解,具有一定借鉴价值,需要的朋友可以参考下
Spring/SpringMVC/MyBatis整合,可事务回滚
NULL 博文链接:https://gary-bu.iteye.com/blog/2025026
此包含有所有Spring事务管理开发所需要的Jar包,包含框架、核心、表达式、日志、编译、事务切面aop、数据库连接、单元测试、框架文本等jar包。
这是一个springmvc+mybatis+声明式事务管理的工程,此工程使用jdk1.8,mysql8.0,tomcat8.0进行开发
Springmvc tx标签事务管理,服务器启动时加载顺序的问题对事务的影响
这是一个完整的mybaits3.0+springmvc+oracle11g项目,包括sql,存储过程等,下载修改数据库连接 即可运行,包括数据增删改查,一对多查询,调用存储过程。完整的配置文件注释,绝对是入门级教材!另附有根据汉字获取...
基于SpringMVC的编程式事务源代码示例,一目了然的超简单使用事务的方式,让你一分钟会用事务。
Spring4+SpringMVC+Mybaties 内含有事务控制
通常情况下,开发时会将Spring配置文件和SpringMVC配置文件分离开,即类似于数据源、事务、整合其他框架、Service和DAO等配置放在Spring的原生配置文件中。也具体说明了Spring的IoC容器与SpringMVC的IoC容器之间的...