Mybatis--SqlSessionFactory 、SqlSession
SqlSessionFactory:创建SqlSession的工厂类,在实际项目开发过程中,整个应用共享唯一的一个SqlSessionFactory对象。
SqlSessionFactory 对象创建的步骤:
1、读取mybatis配置文件
2、创建 SqlSessionFactoryBuilder 实例
3、通过 SqlSessionFactoryBuilder 构建 SqlSessionFactory
SqlSession:可以理解为数据库的连接Connection,它负责数据库的CRUD操作,由SqlSessionFactory负责创建
mybatis配置文件配置了数据源、事务管理器等信息,有了这些信息,SqlSessionFactory才能创建连接信息,配置示例如下:
<environments default="development">
<environment id="development">
<transactionManager type="JDBC">
<property name="..." value="..."/>
</transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
在实际项目中,往往会实现mybatis一个工具类,生成全局唯一的SqlSessionFactory对象,以及创建SqlSession对象,示例如下:
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.Reader;
/**
* MyBatisUtils工具类,创建唯一的SqlSessionFactory对象
*/
public class MyBatisUtils {
//全局唯一,定义成static
private static SqlSessionFactory sqlSessionFactory = null;
static {
Reader reader = null;
try {
reader = Resources.getResourceAsReader("mybatis-config.xml");
//MyBatisUtils 类加载后实例化sqlSessionFactory
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* openSession 创建一个新的SqlSession对象
* @return SqlSession对象
*/
public static SqlSession openSession(){
return sqlSessionFactory.openSession();
}
/**
* 关闭sqlSession对象
* @param session
*/
public static void closeSession(SqlSession session){
if(session != null){
session.close();
}
}
}