spring代理iBATIS时事务不能回滚

转载 2012年03月28日 22:57:13

kkkk如题!

废话不多说了,直接上配置,配置如下,各位看了便知!

applicationContext.xml

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <beans  
  4.   
  5.     xmlns="http://www.springframework.org/schema/beans"  
  6.   
  7.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  8.   
  9.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">  
  10.     <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
  11.         <property name="location"><value>classpath:jdbc.properties</value></property>  
  12.     </bean>  
  13.   
  14.   
  15.     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  destroy-method="close">  
  16.         <property name="url"><value>${jdbc.url}</value></property>  
  17.         <property name="driverClassName"><value>${jdbc.driver}</value></property>  
  18.         <property name="username"><value>${jdbc.username}</value></property>  
  19.         <property name="password"><value>${jdbc.password}</value></property>      
  20.         <property name="defaultAutoCommit" value="false"></property>  
  21.     </bean>  
  22.   
  23.   
  24.     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
  25.         <property name="dataSource" ref="dataSource"/>  
  26.     </bean>  
  27.   
  28.   
  29.     <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor" >  
  30.         <property name="transactionManager" ref="transactionManager" />  
  31.         <property name="transactionAttributes">  
  32.             <props>  
  33.                 <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>  
  34.                 <prop key="*">PROPAGATION_REQUIRED,-Exception</prop>  
  35.             </props>  
  36.         </property>  
  37.     </bean>  
  38.   
  39.   
  40.     <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">  
  41.         <property name="beanNames"> <value>*Service</value></property>  
  42.         <property name="interceptorNames"><value>transactionInterceptor</value></property>  
  43.     </bean>  
  44.   
  45.     <bean id="sqlMapClientFactory" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">  
  46.         <property name="configLocation"><value>classpath:sqlMapConfig.xml</value></property>  
  47.         <property name="dataSource" ref="dataSource"></property>  
  48.         <property name="lobHandler">  
  49.             <bean class="org.springframework.jdbc.support.lob.DefaultLobHandler"/>  
  50.         </property>  
  51.     </bean>  
  52.   
  53.     <bean id="sqlMapTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate">  
  54.         <property name="sqlMapClient" ref="sqlMapClientFactory" />  
  55.         <property name="exceptionTranslator">  
  56.             <bean class="org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator">  
  57.                 <property name="dataSource" ref="dataSource" />  
  58.             </bean>  
  59.         </property>  
  60.     </bean>  
  61. </beans>  

 daoContext.xml

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">  
  5.     <bean id="employeeDao" class="mypackage.dao.impl.EmployeeDaoImpl">  
  6.         <property name="sqlMapTemplate">  
  7.             <ref bean="sqlMapTemplate" />  
  8.         </property>  
  9.     </bean>  
  10. </beans>  

 serviceContext.xml

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">  
  5.     <bean id="employeeService" class="mypackage.service.impl.EmployeeServiceImpl">  
  6.         <property name="employeeDao"><ref bean="employeeDao" /></property>  
  7.     </bean>  
  8. </beans>    

在EmployeeServiceImpl中故意让程序抛出了exception,但是事务仍然提交了:-(

分享到:  
评论
3 楼 workman93 2008-07-23  
Spring代理需要一个RuntimeException才可以回滚。
2 楼 Allen 2008-06-18  
Where is ur pattern matching beanName(s) declared? 

I can only find id declaration of those "*Service" beans... 

Regards.
1 楼 jier007 2008-06-17  
<p>EmployeeDaoImpl.java</p>
<pre name='code' class='java'>package mypackage.dao.impl;

import org.springframework.orm.ibatis.SqlMapClientTemplate;

import mypackage.dao.EmployeeDao;
import mypackage.pojo.Employee;

public class EmployeeDaoImpl implements EmployeeDao
{
private SqlMapClientTemplate sqlMapTemplate;

public void saveEmployee(Employee emp)
{
sqlMapTemplate.insert("employee.save" emp);
}

public void setSqlMapTemplate(SqlMapClientTemplate sqlMapTemplate)
{
this.sqlMapTemplate = sqlMapTemplate;
}

public SqlMapClientTemplate getSqlMapTemplate()
{
return sqlMapTemplate;
}
}</pre>
<p>  EmployeeServiceImpl.java</p>
<pre name='code' class='java'>package mypackage.service.impl;

import mypackage.dao.EmployeeDao;
import mypackage.pojo.Employee;
import mypackage.service.EmployeeService;

public class EmployeeServiceImpl implements EmployeeService
{
private EmployeeDao dao;

public void saveEmp(Employee emp)
{
dao.saveEmployee(emp);
Integer.parseInt("回滚回滚回滚吧!!!");
}

public void setEmployeeDao(EmployeeDao dao)
{
this.dao = dao;
}
}</pre>
 

项目开发-iBatis事务源码之事务提交和回滚

接上篇继续事务的提交和结束流程如下。    commitTransaction       SqlMapClientImpl的commitTransaction操作,类似startTransacti...
  • wojiushiwo945you
  • wojiushiwo945you
  • 2015年04月15日 10:37
  • 2063

ibatis 对事务和批量提交的处理,以及回滚的处理

//ibatis batch 示例     protected void batchCreate(final List memberList, final String statement) {  ...
  • jlb882800
  • jlb882800
  • 2016年06月09日 18:43
  • 2277

ibatis怎么回滚数据?

同时操作两张表,前面一个INSERT语句成功,但后一个INSERT语句失败,这种情况怎么回滚第一个语句新增的内容。一张表插入不成功则都不成功,这要怎么做? 为什么不回滚 发生异常才会回滚,不是这样配...
  • ffmoshu
  • ffmoshu
  • 2012年03月28日 22:54
  • 1000

IBatisNet 事务

Mapper.Instance().BeginTransaction();//启动事务 Mapper.Instance().CommitTransaction();//提交事务   Mapp...
  • john320
  • john320
  • 2016年01月19日 14:46
  • 621

java和ibatis事务处理

java ibatis 事务处理
  • jiandanfeng2
  • jiandanfeng2
  • 2011年08月01日 22:28
  • 8657

Spring实现iBATIS事务回滚~

Spring 实现iBATIS事务回滚是怎么实现的呢?让我们开始这篇文章的学习,这篇文章将会想你介绍Spring 实现iBATIS事务回滚的相关消息 AD: Spr...
  • ffmoshu
  • ffmoshu
  • 2012年03月28日 22:30
  • 1535

Spring实现iBATIS事务回滚

配置如下: Spring实现iBATIS事务回滚之Web.xml ﹤?xml version="1.0" encoding="UTF-8"?﹥ ﹤web-app xmlns="http:/...
  • ffmoshu
  • ffmoshu
  • 2012年03月28日 22:45
  • 668

IBATIS事务处理

iBATIS事务处理是和Dao紧密相联的。          在使用Dao时,如以下代码,先插入新记录,再进行更新:          UserDao.insertUser (user); // ...
  • wanghuan203
  • wanghuan203
  • 2012年12月31日 23:12
  • 25147

SpringMVC+ibatis数据库事务控制

由于在系统中使用了关联表,逻辑上是关联的,实际数据库并没有做外键。就需要写大量的数据库事务操作。之前一直没有比较好的方式,直接在dao层侵入的方式进行,虽然该方式可以实现事务的管理,但是总觉得有些问题...
  • piaomiao2080
  • piaomiao2080
  • 2015年12月08日 16:59
  • 1920

项目开发-iBatis事务源码之事务提交和回滚

接上篇继续事务的提交和结束流程如下。    commitTransaction       SqlMapClientImpl的commitTransaction操作,类似startTransacti...
  • wojiushiwo945you
  • wojiushiwo945you
  • 2015年04月15日 10:37
  • 2063
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:spring代理iBATIS时事务不能回滚
举报原因:
原因补充:

(最多只允许输入30个字)