这篇文章主要介绍“什么是Mybatis源码”,在日常操作中,相信很多人在什么是Mybatis源码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”什么是Mybatis源码”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
成都创新互联公司是一家专业提供头屯河企业网站建设,专注与网站设计制作、成都网站建设、H5技术、小程序制作等业务。10年已为头屯河众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。
这只是MySQL的一个逻辑划分架构。
接口层:通SqlSession
类提供对数据库访问能力,隐藏了后续复杂的处理逻辑。
核心处理层:主要负责执行SQL,并返回结果。
基础支撑层:对一些基础功能进行封装,为核心处理层提供服务。
Mybatis的代码结构非常工整,堪称完美的java编程规范教科书,当我们深入源码我们会发现,Mybatis的注释量相当少,那是因为基本上我们可以通过名称就能明白其中的含义。
如果想学习设计模式在代码中的应用,阅读Mybatis源码也是一个不错的选择,如:
SqlSession使用门面模式
日志模块使用了适配器模式
数据源模块使用工厂模式
数据连接池使用策略模式
缓存模块使用了装饰器模式
Executor模块使用了模板方法模式
Builder模块使用了建造者模式
Mapper接口使用了代理模式
插件模块使用责任链模式
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()); } } }
new SqlSessionFactoryBuilder().build(inputStream);
:读取mybatis配置文件构建SqlSessionFactory
。
sqlSessionFactory.openSession();
:获取sqlSession资源
sqlSession.getMapper(PersonMapper.class);
:获取对应mapper
mapper.selectByPrimaryKey(1L);
:执行查询语句并返回结果
关闭资源
上图是Mybatis的执行流程,由此我们可以看出Mybatis的核心类有4个,分别是SqlSessionFactoryBuilder
、SqlSessionFactory
、SqlSession
、SQL Mapper
。
SqlSessionFactoryBuilde
:读取配置信息(XML文件),创建SqlSessionFactory,建造者模式,方法级别生命周期;
SqlSessionFactory
:创建Sqlsession,工厂单例模式,存在于程序的整个应用程序生命周期;
SqlSession
:代表一次数据库连接,可以直接发送SQL执行,也可以通过调用Mapper访问数据库;线程不安全,要保证线程独享,方法级生命周期;
SQL Mapper
:由一个Java接口和XML文件组成,包含了要执行的SQL语句和结果集映射规则。方法级别生命周期;
从上面的执行流程可以看出,Mybatis核心流程主要分为以下三个阶段:
初始化阶段:读取XML配置文件和注解中的配置信息,创建配置对象,并完成各个模块的初始化的工作;
代理阶段:封装iBatis的编程模型,使用mapper接口开发的初始化工作;
数据读写阶段:通过SqlSession完成SQL的解析,参数的映射、SQL的执行、结果的解析过程;
https://github.com/wyh-spring-ecosystem-student/spring-boot-student/tree/releases
spring-boot-student-mybatis工程
https://github.com/xiaolyuh/mybatis
到此,关于“什么是Mybatis源码”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!