原创

Mybatis学习知识合集+手写一个Mybatis框架

1.官方文档

1.1spring 接入文档

http://mybatis.org/spring/zh/getting-started.html

javaAPI 使用 mybatis

https://mybatis.org/mybatis-3/zh/index.html

2.pdf 文档

2.1 入门

《MyBatis 入门教程》 作者网站: http://www.javaboy.org/

资源下载地址: MyBatis 入门教程

2.2 源码解析

《一本小小的 MyBatis 源码分析书》 由于书有 12m,就不放到笔者服务器了,请去作者网站下载 作者网站: https://www.cnblogs.com/nullllun/p/9625518.html

3.Mybatis 使用示例源码

https://github.com/Sniper2016/MybatisStudy

4.手写 Mybatis 框架

4.1 项目源码:

项目源码

4.2 项目简介:

  • simplebatis 为笔者理解 mybatis 的产物,通过学习 mybatis 的使用,然后自己亲自写一个简易 orm 框架,加深印象,也能理解 mapper 中的很多设定,例如:
  • mapper 中为啥需要 resultMap,typeHandler?
  • 为啥需要把 mapper 注册到 config 呢?
  • 为啥返回的对象 bean 里面必须有 set 方法?
  • 为啥 mybatis 需要配置 jdbc?
  • 为啥???
  • 以上问题其实你如果亲身去设计 mybatis,应该能理解,这些框框条条,目的就是告诉框架一些必要的东西,不然在执行的时候由于条件缺失而无法正确执行。
  • 至于缓存,插件==,这些在 mybatis 基础上面衍生的新功能目的就是增强 mybatis 的作用。
  • 最后说明,mybatis 和 spring 一样,都是超级优秀的框架,每次阅读源码都会有很深的感触,每一个分支都处理得这么完美!

4.3 项目依赖:

该简易框架只需要依赖 jdk1.7+

4.4 项目结构

项目结构
项目结构

4.5 项目引导

  • xml 配置改成了注解 SqlLogicAnno
  • 数据库的 jdbc 操作这里使用一个模拟数据库 SimulateDatabase 来代替,方便演示。
  • 最核心的方法在 MapperMethod 里面的 execute 方法
  • 例子只演示了 insert 和 selectOne 两种操作,其他的可以自行拓展 execute 方法。。。

4.6 测试入口

cn.gameboys.simplebatis.MainTest.main();

5.其他知识

Mybatis 中 Sql 执行过程分层示意图

Sql执行过程分层示意图
Sql执行过程分层示意图

正文到此结束