在编写mybatis配置类的时候其实存在两个问题,一个是获取sqlsessionFactory对象这一步的代码可能会出现重复,还有一个就是sqlsessionFactory是一个工厂对象,既然是一个工厂就不要创建多次,因为我们只要从工厂里面获取sqlsessionFactory连接对象就可以了,每个sqlsessionFactory工厂里面其实都绑定了一个连接池,将来创建多个工厂就意味着要多个连接池,这样的资源消耗是比较大的,所以我们只需要让这个sqlsessionFactory这个工厂的创建只创建一次就可以了
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new
SqlSessionFactoryBuilder().build(inputStream);
解决方法:把这三行代码放到一个工具类的工具方法中,
package com.bin.pojo.com.bin;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class sqlsessionFactory {
private static org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory;
static {
//静态代码块会随着类的加载而自动加载,并只会执行一次
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static org.apache.ibatis.session.SqlSessionFactory getsqlsessionFactory(){
return sqlSessionFactory;
}
}
修改后的mybatis配置类: