ionFactory ibatisSessionFactory;
private T mapper;
public SqlSessionFactory getSessionFactory() {
return ibatisSessionFactory;
}
protected SqlSession getSqlSession() {
return ibatisSessionFactory.openSession();
}
public T getMapper(Class<T> clazz) {
mapper = getSqlSession().getMapper(clazz);
return mapper;
}
public T getMapper(Class<T> clazz, SqlSession session) {
mapper = session.getMapper(clazz);
return mapper;
}
/**
* close SqlSession
*/
protected void closeSqlSession(SqlSession sqlSession) throws Exception {
try {
if (sqlSession != null) {
sqlSession.close();
sqlSession = null;
}
} catch (Exception e) {
}
}
}
org.sky.ssi.ibatis.IBatisTransaction
package org.sky.ssi.ibatis;
import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import org.apache.ibatis.transaction.Transaction;
import org.springframework.jdbc.datasource.DataSourceUtils;
public class IBatisTransaction implements Transaction{
private DataSource dataSource;
private Connection connection;
public IBatisTransaction(DataSource dataSource, Connection con, boolean autoCommit){
this.dataSource = dataSource;
this.connection = con;
}
public Connection getConnection(){
eturn connection;
}
public void commit()
throws SQLException{ }
public void rollback()
throws SQLException{ }
public void close()
throws SQLException{
if(dataSource != null && connection != null){
DataSourceUtils.releaseConnection(connection, dataSource);
}
}
}
org.sky.ssi.ibatis.IBatisTransactionFactory
package org.sky.ssi.ibatis;
import java.sql.Connection;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.ibatis.transaction.Transaction;
import org.apache.ibatis.transaction.TransactionFactory;
public class IBatisTransactionFactory implements TransactionFactory{
private DataSource dataSource;
public IBatisTransactionFactory(DataSource dataSource){
this.dataSource = dataSource;
}
public void setProperties(Properties properties){ }
public Transaction newTransaction(Connection connection, boolean flag){
return new IBatisTransaction(dataSource,connection,flag);
}
}
此三个类的作用就是在datasource.xml文件中描述的,把spring与datasource.xml中的datasource和transaction连接起来,此处尤其是“IBatis3SQLSessionFactoryBean”的写法,它通过spring中的“注入”特性,把iBatis的配置注入进spring并委托spring的context来管理iBatis(此属网上没有的资料,全部为本人在历年工程中的经验总结,并且已经在至少3个项目中进行了集成使用与相关测试)。
建立iBatis配置文件
我们先在/src/main/resources目录下建立一个叫sqlmap.xml的文件,内容如下:
<?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="ibatis/index.xml" />
<mapper resource="ibatis/login.xml" />
</mappers>
</configuration>
然后我们在/src/main/resources 目录下建立index.xml与login.x