最近在研究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与MyBatis 3.01集成及事务管理详解】 SpringMVC作为一款优秀的MVC框架,常用于构建Web应用的控制层,而MyBatis则是一款轻量级的持久层框架,专注于SQL映射。将两者集成可以实现灵活的数据访问和高效的...
在这个基于Maven创建的SpringMVC项目中,我们将探讨Spring对业务层的事务管理,包括编码方式、XML传统配置方式以及基于AOP的XML配置方式。 首先,让我们理解事务管理在Java应用中的重要性。事务是数据库操作的基本...
SSM框架,即Spring、SpringMVC和Mybatis的组合,是Java开发中常见的Web应用程序构建框架。这个框架集合提供了模型-视图-控制器(MVC)架构模式的实现,以及数据库操作的便利性,是企业级应用开发的常用选择。 **...
1. **SpringMVC框架事务管理** SpringMVC是Spring框架的一部分,提供了模型-视图-控制器(MVC)设计模式的实现。它不直接处理事务,而是依赖于Spring的核心功能——IoC(Inversion of Control)容器和AOP(Aspect-...
Spring+SpringMVC配置事务管理无效原因及解决办法详解 Spring 框架是 Java 企业级应用程序的核心框架,提供了事务管理机制,以确保业务逻辑的原子性和一致性。然而,在使用 Spring 和 SpringMVC 配置事务管理时,...
一、 XML,使用tx标签配置拦截器实现事务 一、 Annotation方式 以下所使用环境为Spring4.0.3、Hibernate4.3.5
在"Spring/SpringMVC/MyBatis整合+事务回滚"的主题中,我们将深入探讨如何将这三个框架整合起来,并实现事务的回滚功能。 首先,Spring框架是核心,它提供了依赖注入(DI)和面向切面编程(AOP)的能力,使得代码更...
数据库事务和隔离级别
在IT行业中,SpringMVC、MyBatis以及声明式事务管理是Java Web开发中的关键组件。这个项目结合了这三个核心技术,构建了一个高效、稳定的后端系统。以下将详细阐述这些技术及其相互配合的工作原理。 首先,...
总之,通过SpringMVC,我们可以高效地构建一个完整的Web应用,充分利用其强大的注解驱动、面向切面编程和事务管理能力,同时保持代码的清晰和可维护性。在实际开发中,还会涉及到错误处理、国际化、安全控制等多个...
在SpringMVC框架中配置多数据源是一项常见的需求,尤其在大型企业级应用中,由于业务的复杂性,往往需要连接不同的数据库以满足不同模块的需求。以下将详细讲解如何实现这一功能。 首先,理解数据源(DataSource)...
本教程将深入探讨如何在Spring4、SpringMVC和MyBatis集成环境下实现事务控制。 首先,让我们了解这三个组件的基本概念: 1. **Spring4**:Spring是一个开源的Java平台,它提供了全面的企业级应用开发解决方案,...
这是一个完整的mybaits3.0+springmvc+oracle11g项目,包括sql,存储过程等,下载修改数据库连接 即可运行,包括数据增删改查,一对多查询,调用存储过程。完整的配置文件注释,绝对是入门级教材!另附有根据汉字获取...
3. **事务管理**:Spring提供PlatformTransactionManager接口来管理事务,通常使用DataSourceTransactionManager配合JDBC驱动实现。 4. **Service层**:Service层是业务逻辑的核心,它调用Mapper接口进行数据库操作...
4. **事务处理**:支持开始、提交和回滚事务,确保数据的一致性。 将SQLiteJDBC与SpringMVC结合,可以为小型项目提供一个快速、轻便的数据库解决方案。SpringMVC中的Service层可以利用SQLiteJDBC进行数据操作,通过...
- **事务管理**:SpringMVC和iBatis整合后,可以利用Spring的声明式事务管理,简化事务控制。 - **缓存支持**:iBatis支持二级缓存,结合Spring的缓存抽象,可以实现更高效的缓存策略。 - **AOP编程**:Spring...
你需要在Spring配置文件中声明数据源,并创建一个事务管理器来处理数据库事务。 数据库连接池是提高性能的关键,例如Apache的DBCP或C3P0,它们能有效管理数据库连接,减少资源消耗。在Spring配置文件中,你会看到...
Hibernate支持CRUD(创建、读取、更新、删除)操作,事务管理,以及HQL(Hibernate查询语言)和Criteria API,使得数据库查询更为简洁和高效。 【EXT】 EXTJS(现称为Sencha EXT JS)是一个用于构建富客户端...
SpringMVC+MyBatis事务管理(实例) 本文主要讨论了SpringMVC+MyBatis事务管理的相关知识,涵盖了编程式注解事务和基于注解的声明式事务两种方式。 1. Spring事务管理的分类 Spring事务管理可以分为两种情况:...