有个问题???
来源:2-6 Dao工厂
MAYxDAY
2020-04-14 10:25:19
这里为什么不能去private static SqlSessionFactory sqlSessionFactory 直接调用,而是创建DaoFactory的单例模式? 创建sqlSessionFactory 直接创建getMapper的方法。不也可以吗?
2回答
同学你好,DaoFactory类是dao工厂类,向业务层提供daoFactory实例,并通过getDao()方法获取接口的实例。使用单例模式,将只能有一个实例,避免多次创建。
另外同学的代码完成的也不错,继续加油。
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
MAYxDAY
提问者
2020-04-14
package com.imooc.icake.global;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.Reader;
public class DaoFactory {
private static DaoFactory daoFactory;
private Reader reader;
private SqlSessionFactory sqlSessionFactory;
private DaoFactory(){
try {
reader= Resources.getResourceAsReader("/mybatis-config.xml");
} catch (IOException e) {
e.printStackTrace();
}
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
}
public static DaoFactory getInstance(){
if(daoFactory==null){
daoFactory=new DaoFactory();
}
return daoFactory;
}
public <T> T getDao(Class<T> tClass){
return sqlSessionFactory.openSession(true).getMapper(tClass);
}
}
老师帮我检查一下
相似问题