ibatis3整合spring

转载自:http://www.javaeye.com/topic/528374


    因为ibatis3现在还是测试版,spring也没有出相应的整合。所以,我根据spring整合hibernate的原理,也出来show一下,高手就不要笑我了。开工

主要是的文件有:
   Ibatis3SessionFactory.java      这个是由spring读取ibatis配置文件,并产生sessionFactory工厂的

    Ibatis3DaoSupport.java          我们的dao主要继承它了,因为它有一个模板类,定义了许多方法.

    IBatis3DaoTemplate.java         不是上面的说的模板类

    SqlSessionCallback.java          回调方法。

一 . 我们先来看一下Ibatis3SessionFactory.java

Java代码 复制代码
  1. package com.ibatis3;   
  2.   
  3. import java.io.IOException;   
  4. import java.io.Reader;   
  5.   
  6. import javax.sql.DataSource;   
  7.   
  8. import org.apache.ibatis.builder.xml.XMLConfigBuilder;   
  9. import org.apache.ibatis.io.Resources;   
  10. import org.apache.ibatis.mapping.Environment;   
  11. import org.apache.ibatis.session.Configuration;   
  12. import org.apache.ibatis.session.SqlSessionFactory;   
  13. import org.apache.ibatis.session.defaults.DefaultSqlSessionFactory;   
  14. import org.apache.ibatis.transaction.managed.ManagedTransactionFactory;   
  15. import org.springframework.beans.factory.FactoryBean;   
  16. import org.springframework.beans.factory.InitializingBean;   
  17. import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy;   
  18. /*  
  19.  *  session工厂类  
  20.  */  
  21. public class Ibatis3SessionFactory implements FactoryBean, InitializingBean {   
  22.     private String configLocation;   
  23.   
  24.     private DataSource dataSource;   
  25.   
  26.     private SqlSessionFactory sqlSessionFactory;   
  27.   
  28.     private boolean useTransactionAwareDataSource = true;   
  29.   
  30.     private String environmentId = "development";   
  31.   
  32.     public void setEnvironmentId(String environmentId) {   
  33.         this.environmentId = environmentId;   
  34.     }   
  35.   
  36.     public void setUseTransactionAwareDataSource(   
  37.             boolean useTransactionAwareDataSource) {   
  38.         this.useTransactionAwareDataSource = useTransactionAwareDataSource;   
  39.     }   
  40.   
  41.     public Object getObject() throws Exception {   
  42.         return this.sqlSessionFactory;   
  43.     }   
  44.   
  45.     public Class getObjectType() {   
  46.         return (this.sqlSessionFactory != null ? this.sqlSessionFactory   
  47.                 .getClass() : SqlSessionFactory.class);   
  48.     }   
  49.   
  50.     public boolean isSingleton() {   
  51.         return true;   
  52.     }   
  53.   
  54.     public void afterPropertiesSet() throws Exception {   
  55.         this.sqlSessionFactory = this.buildSqlSessionFactory(configLocation);   
  56.     }   
  57.     protected SqlSessionFactory buildSqlSessionFactory(String configLocation)   
  58.             throws IOException {   
  59.         if (configLocation == null) {   
  60.             throw new IllegalArgumentException(   
  61.                     "configLocation entry is required");   
  62.         }   
  63.         DataSource dataSourceToUse = this.dataSource;   
  64.         if (this.useTransactionAwareDataSource   
  65.                 && !(this.dataSource instanceof TransactionAwareDataSourceProxy)) {   
  66.             dataSourceToUse = new TransactionAwareDataSourceProxy(   
  67.                     this.dataSource);   
  68.         }   
  69.   
  70.         Environment environment = new Environment(environmentId,   
  71.                 new ManagedTransactionFactory(), dataSourceToUse);   
  72.   
  73.         Reader reader = Resources.getResourceAsReader(configLocation);   
  74.         XMLConfigBuilder parser = new XMLConfigBuilder(reader, nullnull);   
  75.         Configuration config = parser.parse();   
  76.         config.setEnvironment(environment);   
  77.   
  78.         return new DefaultSqlSessionFactory(config);   
  79.     }   
  80.   
  81.     public DataSource getDataSource() {   
  82.         return dataSource;   
  83.     }   
  84.   
  85.     public void setDataSource(DataSource dataSource) {   
  86.         this.dataSource = dataSource;   
  87.     }   
  88.   
  89.     public void setConfigLocation(String configLocation) {   
  90.         this.configLocation = configLocation;   
  91.     }   
  92. }  
package com.ibatis3;

import java.io.IOException;
import java.io.Reader;

import javax.sql.DataSource;

import org.apache.ibatis.builder.xml.XMLConfigBuilder;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.defaults.DefaultSqlSessionFactory;
import org.apache.ibatis.transaction.managed.ManagedTransactionFactory;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy;
/*
 *  session工厂类
 */
public class Ibatis3SessionFactory implements FactoryBean, InitializingBean {
	private String configLocation;

	private DataSource dataSource;

	private SqlSessionFactory sqlSessionFactory;

	private boolean useTransactionAwareDataSource = true;

	private String environmentId = "development";

	public void setEnvironmentId(String environmentId) {
		this.environmentId = environmentId;
	}

	public void setUseTransactionAwareDataSource(
			boolean useTransactionAwareDataSource) {
		this.useTransactionAwareDataSource = useTransactionAwareDataSource;
	}

	public Object getObject() throws Exception {
		return this.sqlSessionFactory;
	}

	public Class getObjectType() {
		return (this.sqlSessionFactory != null ? this.sqlSessionFactory
				.getClass() : SqlSessionFactory.class);
	}

	public boolean isSingleton() {
		return true;
	}

	public void afterPropertiesSet() throws Exception {
		this.sqlSessionFactory = this.buildSqlSessionFactory(configLocation);
	}
	protected SqlSessionFactory buildSqlSessionFactory(String configLocation)
			throws IOException {
		if (configLocation == null) {
			throw new IllegalArgumentException(
					"configLocation entry is required");
		}
		DataSource dataSourceToUse = this.dataSource;
		if (this.useTransactionAwareDataSource
				&& !(this.dataSource instanceof TransactionAwareDataSourceProxy)) {
			dataSourceToUse = new TransactionAwareDataSourceProxy(
					this.dataSource);
		}

		Environment environment = new Environment(environmentId,
				new ManagedTransactionFactory(), dataSourceToUse);

		Reader reader = Resources.getResourceAsReader(configLocation);
		XMLConfigBuilder parser = new XMLConfigBuilder(reader, null, null);
		Configuration config = parser.parse();
		config.setEnvironment(environment);

		return new DefaultSqlSessionFactory(config);
	}

	public DataSource getDataSource() {
		return dataSource;
	}

	public void setDataSource(DataSource dataSource) {
		this.dataSource = dataSource;
	}

	public void setConfigLocation(String configLocation) {
		this.configLocation = configLocation;
	}
}


上面代码也借鉴了网络上部分代码,因为转来转去,也不知谁是原创。

二. 下面是最简单的回调函数:

Java代码 复制代码
  1. package com.ibatis3;   
  2.   
  3. import org.apache.ibatis.session.SqlSession;   
  4.   
  5. public interface SqlSessionCallback {   
  6.     public Object doInSqlSession(SqlSession session);   
  7. }  
package com.ibatis3;

import org.apache.ibatis.session.SqlSession;

public interface SqlSessionCallback {
	public Object doInSqlSession(SqlSession session);
}




三.模板类

Java代码 复制代码
  1.   package com.ibatis3;   
  2.   
  3. import java.sql.Connection;   
  4. import java.sql.SQLException;   
  5. import java.util.List;   
  6.   
  7. import javax.sql.DataSource;   
  8.   
  9. import org.apache.ibatis.session.ResultHandler;   
  10. import org.apache.ibatis.session.RowBounds;   
  11. import org.apache.ibatis.session.SqlSession;   
  12. import org.apache.ibatis.session.SqlSessionFactory;   
  13. import org.apache.taglibs.standard.tag.common.sql.DataSourceUtil;   
  14. import org.springframework.jdbc.datasource.DataSourceUtils;   
  15. import org.springframework.jdbc.support.JdbcAccessor;   
  16. import org.springframework.transaction.support.TransactionSynchronizationManager;   
  17.   
  18. public class IBatis3DaoTemplate extends JdbcAccessor {   
  19.     private SqlSessionFactory sessionFactory;   
  20.   
  21.     public IBatis3DaoTemplate(SqlSessionFactory factory) {   
  22.         this.sessionFactory = factory;   
  23.     }   
  24.   
  25.     public SqlSession openSession() {   
  26.         SqlSession session = (SqlSession) TransactionSynchronizationManager   
  27.                 .getResource(sessionFactory);   
  28.         if (session == null) {   
  29.             session = sessionFactory.openSession();   
  30.         }   
  31.         return session;   
  32.     }   
  33.   
  34.     public void setSessionFactory(SqlSessionFactory sessionFactory) {   
  35.         this.sessionFactory = sessionFactory;   
  36.     }   
  37.   
  38.     public List executeFind(SqlSessionCallback callback) {   
  39.         return (List) execute(callback);   
  40.     }   
  41.   
  42.     public Object execute(SqlSessionCallback callback) {   
  43.   
  44.         SqlSession session = openSession();   
  45.   
  46.         Object obj = callback.doInSqlSession(session);   
  47.         if (session != null)   
  48.             session.close();   
  49.   
  50.         return obj;   
  51.     }   
  52.   
  53.     // 删除,根据语句   
  54.     public int delete(final String statement) {   
  55.         return delete(statement, null);   
  56.     }   
  57.   
  58.     // 删除,根据语句,带条件   
  59.     public int delete(final String statement, final Object param) {   
  60.         return (Integer) execute(new SqlSessionCallback() {   
  61.   
  62.             public Object doInSqlSession(SqlSession session) {   
  63.                 if (param != null)   
  64.                     return session.delete(statement, param);   
  65.                 else  
  66.                     return session.delete(statement);   
  67.             }   
  68.         });   
  69.     }   
  70.   
  71.     // 修改带条件   
  72.     public int update(final String statement, final Object param) {   
  73.         return (Integer) execute(new SqlSessionCallback() {   
  74.   
  75.             public Object doInSqlSession(SqlSession session) {   
  76.                 if (param != null)   
  77.                     return session.update(statement, param);   
  78.                 else  
  79.                     return session.update(statement);   
  80.             }   
  81.         });   
  82.     }   
  83.   
  84.     // 修改不带条件   
  85.     public int update(final String statement) {   
  86.         return update(statement, null);   
  87.     }   
  88.   
  89.     // 增加带条件   
  90.     public int insert(final String statement, final Object param) {   
  91.         return (Integer) execute(new SqlSessionCallback() {   
  92.   
  93.             public Object doInSqlSession(SqlSession session) {   
  94.                 if (param != null)   
  95.                     return session.insert(statement, param);   
  96.                 else  
  97.                     return session.insert(statement);   
  98.             }   
  99.         });   
  100.     }   
  101.   
  102.     // 增加不带条件   
  103.     public int insert(final String statement) {   
  104.         return insert(statement, null);   
  105.     }   
  106.   
  107.     // 查询分页   
  108.     public List selectList(final String statement, final Object param,   
  109.             final RowBounds bounds) {   
  110.         return executeFind(new SqlSessionCallback() {   
  111.   
  112.             public Object doInSqlSession(SqlSession session) {   
  113.                 if (statement == null)   
  114.                     throw new IllegalArgumentException(   
  115.                             "Sql 'statement' require");   
  116.                 if (bounds != null && param != null)   
  117.                     return session.selectList(statement, param, bounds);   
  118.                 else if (bounds!=null)   
  119.                     return session.selectList(statement, null, bounds);   
  120.                 else if (param != null) {   
  121.                     return session.selectList(statement, param);   
  122.                 }    
  123.                
  124.                 else  
  125.                     return session.selectList(statement);   
  126.   
  127.             }   
  128.         });   
  129.     }   
  130.   
  131.     // 条件分页   
  132.     public List selectList(final String statement, final Object param,   
  133.             int skip, int limit) {   
  134.         return selectList(statement, param, new RowBounds(skip, limit));   
  135.     }   
  136.   
  137.     // 查询不分页   
  138.     public List selectList(final String statement, final Object param) {   
  139.         return selectList(statement, param, null);   
  140.     }   
  141.   
  142.     // 查询不带条件   
  143.     public List selectList(final String statement) {   
  144.         return selectList(statement, null);   
  145.     }   
  146.   
  147.     // 条件查带处理查询结果,带分页   
  148.     public void select(final String statement, final Object param,   
  149.             final RowBounds bounds, final ResultHandler handler) {   
  150.         if (statement == null || handler == null)   
  151.             throw new IllegalArgumentException(   
  152.                     "'statement' and 'handler' require");   
  153.   
  154.         execute(new SqlSessionCallback() {   
  155.   
  156.             public Object doInSqlSession(SqlSession session) {   
  157.                 if (handler != null && bounds != null && param != null)   
  158.                     session.select(statement, param, bounds, handler);   
  159.                 else if (bounds == null)   
  160.                     session.select(statement, param, handler);   
  161.   
  162.                 return null;   
  163.             }   
  164.         });   
  165.     }   
  166.   
  167.     // 自己处理查询结果 ,不带分页   
  168.     public void select(final String statement, final Object param,   
  169.             final ResultHandler handler) {   
  170.         select(statement, param, null, handler);   
  171.     }   
  172.   
  173.     // 查唯一结果   
  174.     public Object selectOne(final String statement) {   
  175.         return selectOne(statement, null);   
  176.     }   
  177.   
  178.     // 查唯一结果带条件   
  179.     public Object selectOne(final String statement, final Object param) {   
  180.         if (statement == null)   
  181.             throw new IllegalArgumentException("Sql 'statement' require");   
  182.         return execute(new SqlSessionCallback() {   
  183.   
  184.             public Object doInSqlSession(SqlSession session) {   
  185.                 if (param != null)   
  186.                     return session.selectOne(statement, param);   
  187.                 else  
  188.                     return session.selectOne(statement);   
  189.   
  190.             }   
  191.         });   
  192.     }   
  193.   
  194. }  
  package com.ibatis3;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

import javax.sql.DataSource;

import org.apache.ibatis.session.ResultHandler;
import org.apache.ibatis.session.RowBounds;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.taglibs.standard.tag.common.sql.DataSourceUtil;
import org.springframework.jdbc.datasource.DataSourceUtils;
import org.springframework.jdbc.support.JdbcAccessor;
import org.springframework.transaction.support.TransactionSynchronizationManager;

public class IBatis3DaoTemplate extends JdbcAccessor {
	private SqlSessionFactory sessionFactory;

	public IBatis3DaoTemplate(SqlSessionFactory factory) {
		this.sessionFactory = factory;
	}

	public SqlSession openSession() {
		SqlSession session = (SqlSession) TransactionSynchronizationManager
				.getResource(sessionFactory);
		if (session == null) {
			session = sessionFactory.openSession();
		}
		return session;
	}

	public void setSessionFactory(SqlSessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}

	public List executeFind(SqlSessionCallback callback) {
		return (List) execute(callback);
	}

	public Object execute(SqlSessionCallback callback) {

		SqlSession session = openSession();

		Object obj = callback.doInSqlSession(session);
		if (session != null)
			session.close();

		return obj;
	}

	// 删除,根据语句
	public int delete(final String statement) {
		return delete(statement, null);
	}

	// 删除,根据语句,带条件
	public int delete(final String statement, final Object param) {
		return (Integer) execute(new SqlSessionCallback() {

			public Object doInSqlSession(SqlSession session) {
				if (param != null)
					return session.delete(statement, param);
				else
					return session.delete(statement);
			}
		});
	}

	// 修改带条件
	public int update(final String statement, final Object param) {
		return (Integer) execute(new SqlSessionCallback() {

			public Object doInSqlSession(SqlSession session) {
				if (param != null)
					return session.update(statement, param);
				else
					return session.update(statement);
			}
		});
	}

	// 修改不带条件
	public int update(final String statement) {
		return update(statement, null);
	}

	// 增加带条件
	public int insert(final String statement, final Object param) {
		return (Integer) execute(new SqlSessionCallback() {

			public Object doInSqlSession(SqlSession session) {
				if (param != null)
					return session.insert(statement, param);
				else
					return session.insert(statement);
			}
		});
	}

	// 增加不带条件
	public int insert(final String statement) {
		return insert(statement, null);
	}

	// 查询分页
	public List selectList(final String statement, final Object param,
			final RowBounds bounds) {
		return executeFind(new SqlSessionCallback() {

			public Object doInSqlSession(SqlSession session) {
				if (statement == null)
					throw new IllegalArgumentException(
							"Sql 'statement' require");
				if (bounds != null && param != null)
					return session.selectList(statement, param, bounds);
				else if (bounds!=null)
					return session.selectList(statement, null, bounds);
				else if (param != null) {
					return session.selectList(statement, param);
				} 
			
				else
					return session.selectList(statement);

			}
		});
	}

	// 条件分页
	public List selectList(final String statement, final Object param,
			int skip, int limit) {
		return selectList(statement, param, new RowBounds(skip, limit));
	}

	// 查询不分页
	public List selectList(final String statement, final Object param) {
		return selectList(statement, param, null);
	}

	// 查询不带条件
	public List selectList(final String statement) {
		return selectList(statement, null);
	}

	// 条件查带处理查询结果,带分页
	public void select(final String statement, final Object param,
			final RowBounds bounds, final ResultHandler handler) {
		if (statement == null || handler == null)
			throw new IllegalArgumentException(
					"'statement' and 'handler' require");

		execute(new SqlSessionCallback() {

			public Object doInSqlSession(SqlSession session) {
				if (handler != null && bounds != null && param != null)
					session.select(statement, param, bounds, handler);
				else if (bounds == null)
					session.select(statement, param, handler);

				return null;
			}
		});
	}

	// 自己处理查询结果 ,不带分页
	public void select(final String statement, final Object param,
			final ResultHandler handler) {
		select(statement, param, null, handler);
	}

	// 查唯一结果
	public Object selectOne(final String statement) {
		return selectOne(statement, null);
	}

	// 查唯一结果带条件
	public Object selectOne(final String statement, final Object param) {
		if (statement == null)
			throw new IllegalArgumentException("Sql 'statement' require");
		return execute(new SqlSessionCallback() {

			public Object doInSqlSession(SqlSession session) {
				if (param != null)
					return session.selectOne(statement, param);
				else
					return session.selectOne(statement);

			}
		});
	}

}


 
四.Ibatis3DaoSupport支持类

Java代码 复制代码
  1.   package com.ibatis3;   
  2.   
  3. import org.springframework.dao.support.DaoSupport;   
  4.   
  5. import org.springframework.transaction.support.TransactionSynchronizationManager;   
  6.   
  7. import org.apache.ibatis.session.SqlSessionFactory;   
  8. import org.apache.ibatis.session.SqlSession;   
  9.   
  10. import javax.sql.DataSource;   
  11. /*  
  12.  * Dao类  
  13.  * 主要接收传入的sessionFactory  
  14.  * 取得模板  
  15.  */  
  16. public class Ibatis3DaoSupport extends DaoSupport {   
  17.     private SqlSessionFactory sessionFactory;   
  18.     private IBatis3DaoTemplate template;   
  19.        
  20.     public void createTemplate(){   
  21.         this.template = new IBatis3DaoTemplate(sessionFactory);   
  22.     }   
  23.   
  24.     public IBatis3DaoTemplate getTemplate() {   
  25.         //System.out.println(template);   
  26.         return template;   
  27.     }   
  28.   
  29.     public void setTemplate(IBatis3DaoTemplate template) {   
  30.         this.template = template;   
  31.     }   
  32.   
  33.     //创建或得到session   
  34.     public SqlSession openSession() {   
  35.   
  36.         SqlSession session = (SqlSession) TransactionSynchronizationManager   
  37.                 .getResource(sessionFactory);   
  38.         if (session == null) {   
  39.             session = sessionFactory.openSession();   
  40.         }   
  41.         
  42.         return session;   
  43.     }   
  44.   
  45.     public SqlSessionFactory getSessionFactory() {   
  46.         return sessionFactory;   
  47.     }   
  48.   
  49.     public void setSessionFactory(SqlSessionFactory sessionFactory) {   
  50.         this.sessionFactory = sessionFactory;   
  51.         this.template = new IBatis3DaoTemplate(sessionFactory);   
  52.            
  53.     }   
  54.   
  55.        
  56.     @Override  
  57.     protected void checkDaoConfig() throws IllegalArgumentException {   
  58.            
  59.         if (sessionFactory == null) {   
  60.             throw new IllegalArgumentException(   
  61.                     "Property 'sessionFactory' or 'template'  is required");   
  62.         }   
  63.   
  64.     }   
  65.   
  66. }  
  package com.ibatis3;

import org.springframework.dao.support.DaoSupport;

import org.springframework.transaction.support.TransactionSynchronizationManager;

import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSession;

import javax.sql.DataSource;
/*
 * Dao类
 * 主要接收传入的sessionFactory
 * 取得模板
 */
public class Ibatis3DaoSupport extends DaoSupport {
	private SqlSessionFactory sessionFactory;
	private IBatis3DaoTemplate template;
	
	public void createTemplate(){
		this.template = new IBatis3DaoTemplate(sessionFactory);
	}

	public IBatis3DaoTemplate getTemplate() {
		//System.out.println(template);
		return template;
	}

	public void setTemplate(IBatis3DaoTemplate template) {
		this.template = template;
	}

	//创建或得到session
	public SqlSession openSession() {

		SqlSession session = (SqlSession) TransactionSynchronizationManager
				.getResource(sessionFactory);
		if (session == null) {
			session = sessionFactory.openSession();
		}
     
		return session;
	}

	public SqlSessionFactory getSessionFactory() {
		return sessionFactory;
	}

	public void setSessionFactory(SqlSessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
		this.template = new IBatis3DaoTemplate(sessionFactory);
		
	}

	
	@Override
	protected void checkDaoConfig() throws IllegalArgumentException {
		
		if (sessionFactory == null) {
			throw new IllegalArgumentException(
					"Property 'sessionFactory' or 'template'  is required");
		}

	}

}




五.ibatis配置文件,我放在src下面
  

Java代码 复制代码
  1.  <?xml version="1.0" encoding="UTF-8"?>   
  2. ;!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"  
  3.                     "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">   
  4.   
  5. ;configuration>   
  6.  <mappers>   
  7.    <mapper resource="com/pojos/Dep.xml"/>   
  8. </mappers>   
  9. ;/configuration>   
    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"
                       "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">

<configuration>
    <mappers>
      <mapper resource="com/pojos/Dep.xml"/>
   </mappers>
</configuration>

   


  很简单,就是装载些映射文件,其实可以sessionFactory中完成。

六.  pojo类和映射文件就不贴出了,请看附件

七.  spring的配置文件,用了声明式事务.
   

Java代码 复制代码
  1.      <?xml version="1.0" encoding="UTF-8"?>   
  2.   
  3. lt;beans xmlns="http://www.springframework.org/schema/beans"  
  4. xmlns:aop="http://www.springframework.org/schema/aop"  
  5. xmlns:tx="http://www.springframework.org/schema/tx"  
  6. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  7. xsi:schemaLocation="http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd  http://www.springframework.org/schema/aop  http://www.springframework.org/schema/aop/spring-aop-2.5.xsd  http://www.springframework.org/schema/tx  http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">   
  8. <!-- - - - - - - - Apache Dbcp Pool - - - - - - - -->   
  9. <bean id="datasource"  
  10.     class="org.apache.commons.dbcp.BasicDataSource">   
  11.     <property name="driverClassName"  
  12.         value="oracle.jdbc.driver.OracleDriver" />   
  13.     <property name="username" value="scott" />   
  14.     <property name="password" value="tiger" />   
  15.     <property name="url"  
  16.         value="jdbc:oracle:thin:@127.0.0.1:1521:ora92" />   
  17. </bean>   
  18.   
  19. <!-- sqlMapClientSessionBean -->   
  20. <bean id="sessionFactory"  
  21.     class="com.ibatis3.Ibatis3SessionFactory">   
  22.     <property name="configLocation" value="sqlMapConfig.xml"></property>   
  23.     <property name="dataSource" ref="datasource"></property>   
  24. </bean>   
  25.   
  26. <!-- dao -->   
  27. <bean id="depDao" class="com.dao.DepDaoImpl">   
  28.     <property name="sessionFactory" ref="sessionFactory"></property>   
  29. </bean>   
  30.   
  31. <!-- - - - - - - spring Transaction Manager - - - - - - - -->   
  32. <bean id="transactionManager"  
  33.     class="org.springframework.jdbc.datasource.DataSourceTransactionManager">   
  34.     <property name="dataSource" ref="datasource" />   
  35. </bean>   
  36. <!-- - - - - - - spring Transaction Attribute - - - - - - - -->   
  37. <tx:advice id="transactionAdvice"  
  38.     transaction-manager="transactionManager">   
  39.     <tx:attributes>   
  40.         <tx:method name="*"/>   
  41.     </tx:attributes>   
  42. </tx:advice>   
  43. <!--******    weave  *********-->   
  44. <aop:config>   
  45.     <aop:advisor advice-ref="transactionAdvice"  
  46.         pointcut="execution(* com.test.*.*(..))" />   
  47. </aop:config>   
  48.   
  49.   
  50. lt;/beans>   
  51.   
  52.      
      <?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd  http://www.springframework.org/schema/aop  http://www.springframework.org/schema/aop/spring-aop-2.5.xsd  http://www.springframework.org/schema/tx  http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
	<!-- - - - - - - - Apache Dbcp Pool - - - - - - - -->
	<bean id="datasource"
		class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName"
			value="oracle.jdbc.driver.OracleDriver" />
		<property name="username" value="scott" />
		<property name="password" value="tiger" />
		<property name="url"
			value="jdbc:oracle:thin:@127.0.0.1:1521:ora92" />
	</bean>

	<!-- sqlMapClientSessionBean -->
	<bean id="sessionFactory"
		class="com.ibatis3.Ibatis3SessionFactory">
		<property name="configLocation" value="sqlMapConfig.xml"></property>
		<property name="dataSource" ref="datasource"></property>
	</bean>

	<!-- dao -->
	<bean id="depDao" class="com.dao.DepDaoImpl">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>

	<!-- - - - - - - spring Transaction Manager - - - - - - - -->
	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="datasource" />
	</bean>
	<!-- - - - - - - spring Transaction Attribute - - - - - - - -->
	<tx:advice id="transactionAdvice"
		transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="*"/>
		</tx:attributes>
	</tx:advice>
	<!--******    weave  *********-->
	<aop:config>
		<aop:advisor advice-ref="transactionAdvice"
			pointcut="execution(* com.test.*.*(..))" />
	</aop:config>


</beans>

    



完整代码请下载下面附件,因本人水平有限,请勿用在生产环境:)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值