开头说两句
Java 基础 Demo 站: https://www.javastudy.cloud
Java 中高级开发博客: https://www.lixiang.red
Java 学习公众号: java 技术大本营
学习背景
mybatis 做为目前国内最为流行的开源 orm 框架,我们平时在使用时会感受到其带来的诸多便利,但是很少去深入分析,mybatis 源码代码量不多,功能丰富,是一个很好的学习样例,本系列小刀就和大家一起来学习 mybatis
学习工具
- mybatis 文档
基本上我们能用到的使用方法,包括 spring / 非 spring 的各种用法,同样对于英文不太好的同学,也有中文文档可以选择
http://www.mybatis.org/mybatis-3/getting-started.html
http://www.mybatis.org/mybatis-3/zh/index.html (中文) - mybatis 源码
项目在 github 上开源,都可以公开访问
https://github.com/mybatis/mybatis-3 - idea
目前 java 主流开发 ide - 小刀的微信群
一个人学习很辛苦,这里有小伙伴陪你一起学
用 idea 拉取源码
小刀 fork 了一份 mybatis 的源码,同时写补充一些注释进去
https://github.com/weixiaodexiaoxiaodao/mybatis-3
可以选择先下载下来再导入,或者直接用 idea 下载,两种方法都是可以的
导入之后,我们可以看到这是一个基于 maven 的工程,可以用平常导入 maven 工程的方法去导入
给 maven 配置阿里云镜像
打开 settings.xml,找到 mirrors 节点,然后复制以下代码
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
源码目录结构
我们可以看到,mybatis 并不是一个多模块项目,和 tomcat 一样,只有一个模块,而且源码开发人员很友好的在每个包下面,都有一个 package-info.java,对这个包做了简单的说明
通过目录,我们可以看到,mybaits 有几下几大模块
annotation: 在这里面可以看到我们常用的注解,如 @Mapper ,以及 mybatis 的新特性 @Select 等等,都是在这个包里面进行声明的
binding: 做 Mapper 的绑定工作,绑定 mapper 接口和代理类
builder: 通过 xml,注解等构造 mybatis 的配置
cache: 配置 mybatis 的缓存
datasource:数据源
executor: 这个是重点组件,执行 sql 的组件
io: 资源处理模块: mybatis 有个自己封装的 VFS(virtual File system)文件处理系统
jdbc:叫 sql 预处理模块,用于 java 层面书写 sql 语句
logging:日志模块,可以和不同的日志系统进行集成
mapping: 映射模块,主要是 parameterMap , resultMap , 数据库字段和 java 实体类字段之间
parsing: 解析 xml 的模块,使用的 dom+xpath 的方法来解析 xml
reflection: 反射模块,同时把反射到的信息缓存到 HashMap 中
scripting: 脚本模块,用于处理一些自定义的参数拼接等
session: mybatis 的重点模块,我们 sql 语句都是在 session 内执行的
Transaction: 事务的处理,可以看到是真实是处理是通过 connection 调用 jdbc 来处理的
type:做一些类型的映射,声明等等之类的, 为上面的模块提供基础数据
最后说两句
在 mybatis 的学习过程中,各个模块相互配合,共同完成 sql 的查询. 大家在学习过程中有什么问题可以随时联系小刀: best396975802
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于