创建SqlSessionFactory 代码优化
以下三行代码,之前在每个Servlet中都执行一次,浪费资源。
//获取SqlSessionFactory对象 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
问题:
1.代码重复:工具类解决
2.SqlSessionFactory 工厂只创建一次,不要重复创建:静态代码块解决静态代码块会随者类的加载而自动执行,且只执行一次。
每个SqlSession对应一个数据库连接,所以不能作为工具类使用。
工具类抽取
SqlSessionFactoryUtils.javaimport org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException; import java.io.InputStream; public class SqlSessionFactoryUtils { private static SqlSessionFactory sqlSessionFactory; static { try { //获取SqlSessionFactory对象 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } public static SqlSessionFactory getSqlSessionFactory(){ return sqlSessionFactory; }; }
然后在每个Servlet中就可以用一行代码带去开头的三行代码。
SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getSqlSessionFactory();