Mybatis工具类
Mybatis工具类
因为 SqlSessionFactory 对于Mybatis而言是非常重要的,它起到一个承上启下的作用
- 乘上:加载Mybatis的配置文件,初始化Mybatis的环境
- 启下:可以创建
SqlSession对象,完成对数据库的CRUD
所以如果要保证Mybatis环境的唯一性,则需要保证 SqlSessionFactory 的唯一性
package uitl;
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;
/**
* @author 烟雨平生
* @create 2021/12/24 17:33
* @description 1. 创建和管理全局唯一的SqlSessionFactory对象
* 2. 创建连接SqlSession
* 3. 关闭连接
*/
public class MybatisUtil {
/**
* 让sqlSessionFactory全局唯一,可以将它变成static修饰的,这样它就不属于某个对象,而属于
* MybatisUtil类
*/
private static SqlSessionFactory sqlSessionFactory = null;
static {
try {
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
//一旦成功构建了SqlSessionFactory对象,代表Mybatis的环境已经被初始化了
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
e.printStackTrace();
// throw new RuntimeException(e);
//抛出异常,让调用方知道初始化失败了
throw new ExceptionInInitializerError(e);
}
}
/**
* 创建连接
*
* @return
*/
public static SqlSession createSession() {
return sqlSessionFactory.openSession();
}
/**
* 关闭连接
*
* @param sqlSession
*/
public static void closeSession(SqlSession sqlSession) {
if (sqlSession != null) {
sqlSession.close();
}
}
}
@Test
public void testMybatisUtil(){
SqlSession sqlSession = null;
try {
sqlSession = MybatisUtil.createSession();
System.out.println(sqlSession.getConnection());
}catch (Exception e) {
e.printStackTrace();
} finally {
MybatisUtil.closeSession(sqlSession);
}
}
326

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



