有个问题???

来源:2-6 Dao工厂

MAYxDAY

2020-04-14 10:25:19

这里为什么不能去private static SqlSessionFactory sqlSessionFactory 直接调用,而是创建DaoFactory的单例模式? 创建sqlSessionFactory 直接创建getMapper的方法。不也可以吗?

写回答

2回答

好帮手慕阿满

2020-04-14

同学你好,DaoFactory类是dao工厂类,向业务层提供daoFactory实例,并通过getDao()方法获取接口的实例。使用单例模式,将只能有一个实例,避免多次创建。

另外同学的代码完成的也不错,继续加油。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

0

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);
   }
}

老师帮我检查一下

0

0 学习 · 8016 问题

查看课程