Mybatis中通过SqlsessionFacotory对象只创建一次
非集成 获取SqlSessionFactory的代码进行优化
非集成 通过静态类的方式,使SqlsessionFactory只创建一次
--MybatisUtil.java
private static SqlSessionFactory factory;
//静态代码块
static{
try{
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
factory = new SqlSessionFactoryBuilder().build(is);
}catch(IOException,e){
e.printStackTrace();
}
}
public static SqlSession createSqlSession(){
return factory.openSession(false); //默认是关闭的,这里的false参数是开启的意思
}
public static void closeSqlSession(SqlSession sqlSession){
if( null != SqlSession){
SqlSession.close();
}
}
SqlSession
1.包含了执行Sql所需的所有方法
2.对应一次数据库绘画,绘画结束必须关闭
3.线程级别,不能共享(作用域:方法体内或request)
示例:
SqlSession session = sqlSessionFactory.openSession();
try{
//do work
} finally{
session.close();//关闭SqlSession非常重要,必须确保finally代码块正常关闭
//在SqlSession里可以执行多次sql语句,但一旦关闭了SqlSession就不要重新创建
}
SqlSession的获取方式
String resource = "mybatis-config.xml";
InputStream is =Resources.getResourceAsStream(resource);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession = factory.openSession();
SqlSession的两种使用方式
1.通过SqlSession实例直接运行映射的SQL语句
2.基于Mapper接口方式操作数据
SqlSession的两种使用方式的案例实操:https://blog.csdn.net/qq_41086359/article/details/99675887