温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

什么是Mybatis源码

发布时间:2021-09-29 15:39:00 来源:亿速云 阅读:107 作者:iii 栏目:大数据

这篇文章主要介绍“什么是Mybatis源码”,在日常操作中,相信很多人在什么是Mybatis源码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”什么是Mybatis源码”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

整体架构

什么是Mybatis源码

这只是MySql的一个逻辑划分架构。

  • 接口层:通SqlSession类提供对数据库访问能力,隐藏了后续复杂的处理逻辑。

  • 核心处理层:主要负责执行SQL,并返回结果。

  • 基础支撑层:对一些基础功能进行封装,为核心处理层提供服务。

代码结构

什么是Mybatis源码

Mybatis的代码结构非常工整,堪称完美的java编程规范教科书,当我们深入源码我们会发现,Mybatis的注释量相当少,那是因为基本上我们可以通过名称就能明白其中的含义。

Mybatis中的设计模式

如果想学习设计模式在代码中的应用,阅读Mybatis源码也是一个不错的选择,如:

  • SqlSession使用门面模式

  • 日志模块使用了适配器模式

  • 数据源模块使用工厂模式

  • 数据连接池使用策略模式

  • 缓存模块使用了装饰器模式

  • Executor模块使用了模板方法模式

  • Builder模块使用了建造者模式

  • Mapper接口使用了代理模式

  • 插件模块使用责任链模式

Mybatis 快速入门

public class MybatisTest extends BaseTest {

    private SqlSessionFactory sqlSessionFactory;

    @Before
    public void init() throws IOException {
        String resource = "config/mybatis-config.xml";
        try (InputStream inputStream = Resources.getResourceAsStream(resource)) {
            // 1.读取mybatis配置文件创SqlSessionFactory
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        }
    }

    @Test
    // 测试自动映射以及下划线自动转化驼峰
    public void quickStart() throws Exception {
        // 2.获取sqlSession
        try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
            initH2dbMybatis(sqlSession);

            // 3.获取对应mapper
            PersonMapper mapper = sqlSession.getMapper(PersonMapper.class);
            // 4.执行查询语句并返回结果
            Person person = mapper.selectByPrimaryKey(1L);
            System.out.println(person.toString());
        }
    }
}

Mybatis执行流程

什么是Mybatis源码

  1. new SqlSessionFactoryBuilder().build(inputStream);:读取mybatis配置文件构建SqlSessionFactory

  2. sqlSessionFactory.openSession();:获取sqlSession资源

  3. sqlSession.getMapper(PersonMapper.class);:获取对应mapper

  4. mapper.selectByPrimaryKey(1L);:执行查询语句并返回结果

  5. 关闭资源

上图是Mybatis的执行流程,由此我们可以看出Mybatis的核心类有4个,分别是SqlSessionFactoryBuilderSqlSessionFactorySqlSessionSQL Mapper

  • SqlSessionFactoryBuilde:读取配置信息(XML文件),创建SqlSessionFactory,建造者模式,方法级别生命周期;

  • SqlSessionFactory:创建Sqlsession,工厂单例模式,存在于程序的整个应用程序生命周期;

  • SqlSession:代表一次数据库连接,可以直接发送SQL执行,也可以通过调用Mapper访问数据库;线程不安全,要保证线程独享,方法级生命周期;

  • SQL Mapper:由一个Java接口和XML文件组成,包含了要执行的SQL语句和结果集映射规则。方法级别生命周期;

Mybatis核心流程三大阶段

从上面的执行流程可以看出,Mybatis核心流程主要分为以下三个阶段:

  • 初始化阶段:读取XML配置文件和注解中的配置信息,创建配置对象,并完成各个模块的初始化的工作;

  • 代理阶段:封装iBatis的编程模型,使用mapper接口开发的初始化工作;

  • 数据读写阶段:通过SqlSession完成SQL的解析,参数的映射、SQL的执行、结果的解析过程;

示例源码

https://github.com/wyh-spring-ecosystem-student/spring-boot-student/tree/releases

spring-boot-student-mybatis工程

Mybatis 源码中文注释

https://github.com/xiaolyuh/mybatis

到此,关于“什么是Mybatis源码”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI