SqlDataAccessUtil package org.onepiece;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import jav
package org.onepiece;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class SqlDataAccessUtil {
private final static Class
lockObj = SqlDataAccessUtil.class;
//数据库的连接池,数据库的连接资源
private static SqlSessionFactory sqlSessionFactory = null;
private final static String xmlResource = "mybatis-config.xml";
private static SqlSessionFactory getSqlSessionFactoryImpl() throws IOException
{
//加锁,防止在多线程中多次实例化sqlSessionFactory对象
//为了保证sqlSessionFactory的唯一性
synchronized (lockObj) {
if (sqlSessionFactory != null) {
return sqlSessionFactory;
} else {
//String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(xmlResource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} finally {
if (inputStream != null) {
inputStream.close();
}
}
return sqlSessionFactory;
}
}
}
protected SqlSessionFactory getSqlSessionFactory() throws IOException
{
if(sqlSessionFactory == null){
sqlSessionFactory = getSqlSessionFactoryImpl();
}
return sqlSessionFactory;
}
public SqlSession getSqlSession() throws IOException {
if (sqlSessionFactory == null) {
sqlSessionFactory = getSqlSessionFactory();
}
return sqlSessionFactory.openSession();
}
public SqlSession getSqlSession(boolean isNewOpen) throws IOException {
if (sqlSessionFactory == null) {
sqlSessionFactory = getSqlSessionFactory();
}
return sqlSessionFactory.openSession(isNewOpen);
}
}
