Mybatis配置加载流程完全图解,建造者模式的优雅应用

一、Mybatis运行流程概述

为了熟悉Mybatis的运行流程,我们先看一段代码

java复制代码public class MybatisDemo {
    

    private SqlSessionFactory sqlSessionFactory;
    
    @Before
    public void init() throws IOException {
        //--------------------第一步:加载配置---------------------------
        // 1.读取mybatis配置文件创SqlSessionFactory
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        // 1.读取mybatis配置文件创SqlSessionFactory
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        inputStream.close();
    }
    
    @Test
    // 快速入门
    public void quickStart() throws IOException {
        //--------------------第二部,创建代理对象---------------------------
        // 2.获取sqlSession   
        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 3.获取对应mapper
        TUserMapper mapper = sqlSession.getMapper(TUserMapper.class);
        
        //--------------------第三步:获取数据---------------------------
        // 4.执行查询语句并返回单条数据
        TUser user = mapper.selectByPrimaryKey(2);
        System.out.println(user);
        
        System.out.println("----------------------------------");
        
        // 5.执行查询语句并返回多条数据
//      List<TUser> users = mapper.selectAll();
//      for (TUser tUser : users) {
//          System.out.println(tUser);
//      }
    }
}

以上是我们一个使用mybatis访问数据的demo,通过对快速入门代码的分析,可以把 MyBatis 的运行流程分为三大阶段:

  1. 初始化阶段:读取 XML 配置文件和注解中的配置信息,创建配置对象,并完成各个模块的初始化的工作;
  2. 代理封装阶段:封装 iBatis 的编程模型,使用 mapper 接口开发的初始化工作;
  3. 数据访问阶段:通过 SqlSession 完成 SQL 的解析,参数的映射、SQL 的执行、结果的解析过程;

今天我们就介绍以下第一个阶段中,Mybatis是如何读取配置的

二、配置加载的核心类

2.1 建造器三个核心类

在 MyBatis 中负责加载配置文件的核心类有三个,类图如下:

  • BaseBuilder:所有解析器的父类,包含配置文件实例,为解析文件提供的一些通用的方法;
  • XMLConfigBuilder: 主要负责解析 mybatis-config.xml;
  • XMLMapperBuilder: 主要负责解析映射配置 Mapper.xml 文件;
  • XMLStatementBuilder: 主要负责解析映射配置文件中的 SQL 节点;

XMLConfigBuilder、XMLMapperBuilder、XMLStatementBuilder 这三个类在配置文件加载过程中非常重要,具体分工如下图所示:

这三个类使用了建造者模式对 configuration 对象进行初始化,但是没有使用建造者模式 的“肉体”(流式编程风格),只用了灵魂(屏蔽复杂对象的创建过程),把建造者模式演绎 成了工厂模式;后面还会对这三个类源码进行分析;

居然这三个对象使用的是建造者模式,那么我们稍后介绍下什么是建造者模式

三、建造者模式

3.1 什么是建造者模式

建造者模式(BuilderPattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

建造者模式类图如下:

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringBoot整合Mybatis配置流程可以分为以下步骤: 1. 首先,需要在项目的pom.xml文件中添加相关的依赖,包括mybatis-spring-boot-starter和spring-boot-starter-jdbc等。这些依赖可以通过Maven或Gradle进行管理。 2. 接着,需要在应用程序的配置文件(一般是application.yml或application.properties)中进行相关配置。包括数据库连接信息、Mybatis配置信息等。 3. 然后,创建实体类(entity)来映射数据库表。这些实体类通常使用注解来指定表名、字段名等信息。 4. 接着,创建数据访问对象(dao)接口,定义数据库操作的方法,使用Mybatis的注解或XML文件进行SQL语句的映射。 5. 接下来,创建服务层(service)和控制层(controller)来完成业务逻辑的处理和接口的调用。 6. 最后,在resources目录下创建mapper文件夹,编写对应的mapper接口和XML文件。XML文件中定义了具体的SQL语句,并与dao接口进行映射。 需要注意的是,以上步骤是整合Mybatis的一般配置流程,具体的实现方式可能会根据项目的需求和个人的习惯有所不同。可以参考和中提供的引用内容了解更多关于SpringBoot整合Mybatis配置流程。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [springboot整合mybatis详细步骤](https://blog.csdn.net/kobe_IT/article/details/123548793)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [springBoot——SpringBoot 整合 Mybatis 流程](https://blog.csdn.net/DreamPossible20/article/details/128751096)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值