• MyBatis框架设计模式分析


      上图是我们的测试类,我们现在从这个类分析mybatis框架的设计模式。

      首先是读取配置文件,那不外乎一个常见的问题——绝对路径和相对路径。用绝对路径的话你产品给到其他电脑,没你指定的盘怎么办;用相对路径的话,src/java/main/xxx.xml,如果是个web工程,一旦部署,src目录就没了(web工程是部署到tomcat等服务器运行的,这个时候程序目录里没src文件)。

      所以我们不用绝对路径也不用相对路径,那怎么读配置文件呢?1.使用类加载器——只能读取类路径的配置文件2.使用ServletCcontext对象的getRealPath()——能得到当前应用部署的绝对路径。

      我们再来看工厂的创建,创建工厂mybatis使用了构建者模式——当开发者要创建xxx的时候,无需考虑具体的构建方式,把构建细节交给一个包工队(buider)。在这里这个包工队就是SqlSessionFactoryBuilder。繁琐复杂的东西都不用管,只需要把配置文件给buider就行,细节都不用操心。

      我们再看SqlSession的创建,使用了工厂模式,如果对象的实例化用new xxx()实现,当需求发生改动,需要变成new yyy()时,我们就要改一遍代码,重新编译重新部署重启服务器。过程及其繁杂,于是我们把new屏蔽了,而是使用了工厂生产一个session对象,这时就降低了类之间的依赖关系,我们称之为解耦。

      创建dao接口代理对象时,使用了代理模式,优势是不修改源码的基础上对已有方法增强,换句话说就是我们使用这个代码模式实现不写dao实现类,也能实现功能的好处。

      那为什么mybatis要搞那么多东西,直接从配置文件获得代理对象不香吗?

      那是因为中间的过程有很多的重载,能实现其他不同的需求,能进行灵活的封装,等本菜鸡学完后面的框架,应该就能做到上图一样的直接操作了。

  • 相关阅读:
    Java -- 最简单的认识重载
    maven打包spring boot项目及跳过test文件
    springboot 配置elasticsearch Java High Rest Client
    面向对象与面向过程的区别
    vue --- axios拦截器+form格式请求体
    kotlin --- 时间戳与字符串互相转换
    各种技术的路线图
    bpmn-js起步
    纵观 jBPM:从 jBPM3 到 jBPM5 以及 Activiti5
    几大工作流引擎对比
  • 原文地址:https://www.cnblogs.com/qq2210446939/p/13449995.html
Copyright © 2020-2023  润新知