/**
*
*/
package com.hotelmanagement.utils;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MybatisSqlSessionFactory {
private static SqlSession session;
private static SqlSessionFactory factory;
/*静态块只进入一次 因为session的开销太大,session可以共享,所以进入一次即可*/
static{
InputStream is = null;
try {
is = Resources.getResourceAsStream("mybatis-config.xml");
factory = new SqlSessionFactoryBuilder().build(is);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(is != null){
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
/**
*
*/
public MybatisSqlSessionFactory() {
// TODO Auto-generated constructor stub
}
//如果使用中session丢失重新获取
public static void rebuildSqlSessionFactory(){
InputStream is = null;
try {
is = Resources.getResourceAsStream("mybatis-config.xml");
factory = new SqlSessionFactoryBuilder().build(is);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(is != null){
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
/**
* 获取SqlSession实例
* @return SqlSession
*/
public static SqlSession getSession(){
if(factory == null){
rebuildSqlSessionFactory();
}
session = factory.openSession();
return session;
}
/**
* 释放资源
*/
public static void close(){
if(session != null){
session.close();
}
}
}
MybatisSqlSessionFactory类来得到Mybatis的session对象
最新推荐文章于 2025-04-15 22:12:21 发布
本文介绍了一个用于创建MyBatis SqlSession的实用工具类,该类通过静态代码块初始化SqlSessionFactory,确保了在整个应用运行期间仅创建一次会话工厂,从而减少资源消耗并提高效率。

2504

被折叠的 条评论
为什么被折叠?



