Spring实现iBATIS事务回滚

转载 2012年03月28日 22:45:27

配置如下:

Spring实现iBATIS事务回滚之Web.xml

  1. ﹤?xml version="1.0" encoding="UTF-8"?﹥
  2. ﹤web-app xmlns="http://java.sun.com/xml/ns/j2ee"
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4"
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
  5.      ﹤context-param﹥
  6.         ﹤param-name﹥contextConfigLocation﹤/param-name﹥
  7.         ﹤param-value﹥classpath:applicationContext.xml﹤/param-value﹥
  8.      ﹤/context-param﹥
  9.      ﹤listener﹥
  10.         ﹤listener-class﹥
  11.             org.springframework.web.context.ContextLoaderListener
  12.         ﹤/listener-class﹥
  13.      ﹤/listener﹥
  14.      ﹤servlet﹥
  15.         ﹤servlet-name﹥AppConfigServlet﹤/servlet-name﹥
  16.         ﹤servlet-class﹥com.test.ConfigServlet﹤/servlet-class﹥
  17.         ﹤load-on-startup﹥2﹤/load-on-startup﹥
  18.      ﹤/servlet﹥
  19.      ﹤welcome-file-list﹥
  20.         ﹤welcome-file﹥index.jsp﹤/welcome-file﹥
  21.      ﹤/welcome-file-list﹥
  22. ﹤/web-app﹥

Spring实现iBATIS事务回滚之ApplicationContext.xml

  1. ﹤bean id="transactionManager"
  2. class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
  3.         ﹤property name="dataSource" ref="dataSource" /﹥
  4.      ﹤/bean﹥
  5. ﹤bean id="businessTarget"
  6.        class="com.test.BusinessInterfaceImpl" /﹥
  7.        
  8.      ﹤bean id="businessBean"
  9.        class="org.springframework.aop.framework.ProxyFactoryBean"
  10.         ﹤property name="singleton"
  11.             ﹤value﹥true﹤/value﹥
  12.         ﹤/property﹥
  13.         ﹤property name="proxyInterfaces"
  14.             ﹤value﹥com.test.BusinessInterface﹤/value﹥
  15.         ﹤/property﹥
  16.         ﹤property name="interceptorNames"
  17.             ﹤list﹥
  18.                ﹤value﹥transactionInterceptor﹤/value﹥
  19.                ﹤value﹥businessTarget﹤/value﹥
  20.             ﹤/list﹥
  21.         ﹤/property﹥
  22.         ﹤property name="proxyTargetClass"﹥﹤value﹥true﹤/value﹥﹤/property﹥
  23.      ﹤/bean﹥
  24.     
  25.      ﹤bean id="transactionInterceptor"
  26.        class="org.springframework.transaction.interceptor.TransactionInterceptor"
  27.         ﹤property name="transactionManager"
  28.             ﹤ref local="transactionManager" /﹥
  29.         ﹤/property﹥
  30.         ﹤property name="transactionAttributes"
  31.             ﹤props﹥
  32.                ﹤prop key="*"﹥PROPAGATION_REQUIRED,-Exception﹤/prop﹥
  33.             ﹤/props﹥
  34.         ﹤/property﹥
  35.      ﹤/bean﹥
  36.      ﹤bean id="dataSource"
  37.        class="org.springframework.jndi.JndiObjectFactoryBean"
  38.         ﹤property name="jndiName"
  39.             ﹤value﹥gissys﹤/value﹥
  40.         ﹤/property﹥
  41.      ﹤/bean﹥
  42. ﹤bean id="sqlMapClient"
  43.        class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"
  44.         ﹤property name="configLocation"
  45.             ﹤value﹥
  46.                classpath:com/emaptech/persistence/SqlMapConfig.xml
  47.             ﹤/value﹥
  48.         ﹤/property﹥
  49.         ﹤property name="dataSource" ref="dataSource"﹥﹤/property﹥
  50.      ﹤/bean﹥

Spring实现iBATIS事务回滚之Ibatis.xml

  1. ﹤insert id="testInsert" parameterClass="string"
  2.     insert into corebase.cc select 6,#value# from dual
  3. ﹤/insert﹥
  4. ﹤insert id="testInsertWrong" parameterClass="string"
  5.     insert into corebase.cc select 6,#value#,7 from dual
  6. ﹤/insert﹥

Spring实现iBATIS事务回滚之ConfigServlet.java

  1. package com.test;
  2. import javax.servlet.ServletException;
  3. import javax.servlet.http.HttpServlet;
  4. import org.springframework.context.ApplicationContext;
  5. import org.springframework.web.context.support.WebApplicationContextUtils;
  6. public class ConfigServlet extends HttpServlet {
  7.     /**
  8.       * UID
  9.       */
  10.     private static final long serialVersionUID = 5118794568550751611L;
  11.     public void init() throws ServletException {
  12.         ApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(this.getServletContext());
  13.         BaseService.getInstance().init(ctx);
  14.        super.init();
  15.      }
  16. }

Spring实现iBATIS事务回滚之BaseService.java

  1. package com.test;
  2. import org.springframework.beans.BeansException;
  3. import org.springframework.beans.factory.xml.XmlBeanFactory;
  4. import org.springframework.context.ApplicationContext;
  5. import org.springframework.context.ApplicationContextAware;
  6. import org.springframework.core.io.ClassPathResource;
  7. import com.ibatis.sqlmap.client.SqlMapClient;
  8. public class BaseService implements ApplicationContextAware {
  9.     private static ApplicationContext ctx;
  10.     private static SqlMapClient sqlMapClient;
  11.     private static SqlMapClient sqlMapClientProxy;
  12.     private static BusinessInterface businessBean;
  13.     
  14.     private static BaseService instance = new BaseService();
  15.   
  16.     /**
  17.       * @return 返回 静态类
  18.       */
  19.     public static BaseService getInstance(){
  20.        return instance;
  21.      }
  22.     /**
  23.       * @return 返回 初始化BaseService,存于内存
  24.       */
  25.     public void init(ApplicationContext ctx) {
  26.         setApplicationContext(ctx);
  27.         setSqlMapClient(ctx);
  28.         setBusinessBean(ctx);
  29. //      setSqlMapClientProxy(ctx);
  30.         System.out.println(" INFO - 初始化baseservice成功");
  31.      }
  32.     public void setSqlMapClient(ApplicationContext ctx){
  33.         sqlMapClient = (SqlMapClient) ctx.getBean("sqlMapClient");
  34.      }    
  35.     /**
  36.       * @return 返回 sqlMapClient。
  37.       */
  38.     public SqlMapClient getInstanceSqlMapClient() {
  39.       return this.sqlMapClient;
  40.      }
  41.     /**
  42.       * 通过spring注入ApplicationContext
  43.       *
  44.       * @param ApplicationContext
  45.       * @return null
  46.       */
  47.     public void setApplicationContext(ApplicationContext arg0) throws BeansException {
  48.         ctx = arg0;
  49.      }
  50.     public Object getBean(String beanName) {
  51.        return ctx.getBean(beanName);
  52.      }
  53.     /**
  54.       * @return 返回 sqlMapClient。
  55.       */
  56.     public SqlMapClient getSqlMapClient() {
  57.        return (SqlMapClient) ctx.getBean("sqlMapClient");
  58.      }
  59.     public void setSqlMapClientProxy(ApplicationContext ctx) {
  60.         sqlMapClientProxy= (SqlMapClient) ctx.getBean("sqlMapClientProxy");
  61.      }
  62.     public SqlMapClient getSqlMapClientProxy() {
  63.        return sqlMapClientProxy;
  64.      }
  65.     public static BusinessInterface getBusinessBean() {
  66.        return businessBean;
  67.      }
  68.     public static void setBusinessBean(ApplicationContext ctx) {
  69.         businessBean = (BusinessInterface) ctx.getBean("businessBean");
  70.      }
  71. }

Spring实现iBATIS事务回滚~

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

Spring实现iBATIS事务回滚

配置如下: Spring实现iBATIS事务回滚之Web.xml ﹤?xml version="1.0" encoding="UTF-8"?﹥ ﹤web-app xmlns="http://...
  • xilangyuyun
  • xilangyuyun
  • 2011年08月18日 15:46
  • 712

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

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

如何处理Spring、Ibatis结合MySQL数据库使用时的事务操作

如何处理Spring、Ibatis结合MySQL数据库使用时的事务操作
  • wangshuxuncom
  • wangshuxuncom
  • 2015年03月04日 08:34
  • 1966

Spring事务为什么不会自动回滚?Spring事务怎样才会自动回滚?事务自动回滚条件及手动回滚

在此,首先我们要明确RuntimeException与Exception之间的关系与他们分别的含义:        ①在Java中异常的基类为Throwable,他有两个子类Exception与Er...
  • qq_32331073
  • qq_32331073
  • 2017年08月01日 10:39
  • 1983

如何处理Ibatis结合MySQL数据库使用时的事务操作

如何处理Ibatis结合MySQL数据库使用时的事务操作
  • wangshuxuncom
  • wangshuxuncom
  • 2015年03月04日 08:37
  • 1277

Spring+ ibatis批量插入数据

1:class extends SqlMapClientDaoSupport 2: @Resource(name = "sqlMapClient") private SqlMapClient s...
  • zjc324106
  • zjc324106
  • 2014年03月20日 16:20
  • 3245

spring aop事务配置,事务回滚

1、首先说一下新手的一些误区,不要把service层用的跟dao层是一个模式了,一个service可以管理多个dao,把多个dao集成为一个事务过程,一个action对应一个service,因为在程序...
  • qw463800202
  • qw463800202
  • 2015年07月20日 10:48
  • 4842

Spring混合框架(Hibernate+JDBC/iBatis)的事务管理

Spring事务管理器的应对     Spring抽象的DAO体系兼容多种数据访问技术,它们各有特色,各有千秋。像Hibernate是非常优秀的ORM实现方案,但对底层SQL的控制不太方便;而iBa...
  • zmx729618
  • zmx729618
  • 2016年05月04日 15:08
  • 2226

spring+ibatis实现读写分离(分享我的开源项目)

先吐槽下博客园,每天都推荐水帖不说,正经的分享技术的博客还他妈的不让上首页,我在那里投入了那么多汗水,什么垃圾东西。spring+ibatis实现读写分离 特点 无缝结合spring+ibatis,...
  • tangyanbo1110
  • tangyanbo1110
  • 2015年06月26日 12:04
  • 1202
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring实现iBATIS事务回滚
举报原因:
原因补充:

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