Mybatis入门案例中设计模式的简单分析

2019-12-31 16:02:38来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

Mybatis入门案例中设计模式的简单分析

Talk is cheap, show me the code!

public class TestMybatis {
    public static void main(String[] args) throws IOException {

        //1. 读取配置文件
        InputStream resource = Resources.getResourceAsStream("mybatis.xml");

        //2. 创建sqlSessionFactory工厂
        SqlSessionFactoryBuilder Builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = Builder.build(resource);

        //3. 使用工厂模式创建sqlSession对象
        SqlSession sqlSession = factory.openSession();

        //4. 使用sqlSession对象创建mapper(Dao接口)的代理对象
        ItemsMapper mapper = sqlSession.getMapper(ItemsMapper.class);

        //5. 使用代理对象执行方法
        List<Items> items = mapper.selectAll();
        for (Items item : items) {
            System.out.println(item);
        }
        
        //6. 释放资源
        sqlSession.close();
        resource.close();
    }
}

以上这段mybatis的入门案例代码,相信每一个了解mybatis的朋友都能看得懂,知码酱同学今天也细细品了品!

  1. 项目的路径问题 : Resources.getResourceAsStream("mybatis.xml");
    在实际的项目中,并不推荐众所周知的相对路径和绝对路径。

    • 相对路径:src/main/java/xxx.xml web应用是需要部署到服务器上的,一旦部署,项目的路径就会发生改变,然后。。。。一堆404;
    • 绝对路径:F:/project/xxx/xxx.xml 要知道,服务器可不一定有我们的F盘,况且推荐使用linux系统的服务器;
      • 推荐使用
        1. 使用类加载器,但是它只能加载类路径的配置文件;
        2. 使用项目路径(根路径)。
      • 贴个地址,方便查看 https://blog.csdn.net/chenmh12/article/details/90515148
  2. 使用构建者模式创建SqlSessionFactory对象

    SqlSessionFactoryBuilder Builder = new SqlSessionFactoryBuilder();
    SqlSessionFactory factory = Builder.build(resource);
    • 什么是构建者模式呢? 源码暂且不做探究,我的理解就是点石成金的工程队,想要黄金(factory),你得提供原材料(resource)吧,道理就这么简单!
    • ==优点==:隐藏了创建对象的细节,只需调用相应方法就能得到对象!
  3. 使用==工厂模式==创建SqlSession对象

    SqlSession sqlSession = factory.openSession();
    • 工厂模式的使用,使得我们无需手动new一个对象,因为这样不利于维护(一旦改变需求就要改源代码,又得重新编译部署!)
    • ==优点==:解耦(降低了类和类之间的依赖关系)
  4. 使用==代理模式==创建了mapper(Dao)接口的实现类
    java ItemsMapper mapper = sqlSession.getMapper(ItemsMapper.class);

    • 代理模式就好比租房的中介,房东只需提供房源,关于租房的事情交给中介(代理),其他什么都不用管,做自己的事情就行。也就是说使用代理模式,之前的代码完全不需要改变,也不需要我们创建实现类,代理会帮我们完成这件事情!
    • ==优点==:不修改源码的基础上对已有方法增强!
  5. 总结:这篇文章的出发点是浅显易懂的理解mybatis入门案例中的设计模式和使用路径时应该注意的问题,虽然后续学习spring的时候,这些内容也会被隐藏,但目的是为了理解mybatis设计的独具匠心,关于设计模式的深层次理解,还需要我们多读一写其他的相关文章,多推敲设计模式的代码!


原文链接:https://www.cnblogs.com/jp-code/p/12127174.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:JVM探秘:内存溢出

下一篇:Dubbo与SpringBoot整合流程(从实例入手,附代码下载)