3、Mybatis 中用的设计模式

//    1、读取配置文件
        /**
         * 读取配置文件的方式
         * 1、绝对路径:从磁盘位置读取配置文件,如:F:/mybatis/mybatis-config.xml,缺点可能别的机器没有F盘
         * 2、相对路径:相对路径从项目的src目录下开始,如:src/main/mybatis.xml,缺点:如果项目是web工程,一旦部署src目录消失
         * 3、使用类加载器(推荐):只能读取类路径下的配置文件
         * 4、使用ServletContext对象的getRealPath(推荐):能得到当前应用部署的绝对路径
         */
        InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
//    2、创建SqlSessionFactory工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        /**
         * 创建工厂使用了构建者模式:builder.build(in);
         * 优势:将对象的创建细节隐藏,使使用者直接调用该方法获取对象
         */
        SqlSessionFactory sqlSessionFactory = builder.build(in);
//    3、使用工厂生产SqlSession对象
        /**
         * 生产sqlSession使用了工厂模式:sqlSessionFactory.openSession()
         * 通过工厂模式创建对象的好处:解决了硬编码问题,
         * 直接创建对象的缺点,会降低代码的灵活程度,当需要创建别的对象时,这需要进入代码中进行修改;
         * 优势:解耦(降低类之间的依赖关系)
         */
        SqlSession sqlSession = sqlSessionFactory.openSession();
//    4、使用SQLSession创建Dao接口的代理对象
        /**
         * 创建mapper实现类使用了代理模式:sqlSession.getMapper(UserDao.class);
         * 优势:不修改源码的基础上对已有方法增强
         */
        UserDao userDao = sqlSession.getMapper(UserDao.class);
//    5、使用代理对象执行方法
        List users = userDao.findAllUser();
        for (User user: users
                ) {
            System.out.println(user);
        }
//     6、释放资源
        sqlSession.close();
        in.close();

你可能感兴趣的:(3、Mybatis 中用的设计模式)