1.1 ORM 简介
JDBC 是 Java 与数据库交互的统一 API. 传统的 JDBC 编程的操作步骤如下:
(1), 注册数据库驱动, 明确指定数据库 URL 地址, 数据库用户名, 密码等连接信息
(2), 通过 DriverManager 打开数据库连接
(3), 通过数据库连接创建 Statement 对象
(4), 通过 Statement 对象执行 SQL 语句, 得到 ResultSet 对象
(5), 通过 ResultSet 读取数据, 并将数据转换成 JavaBean 对象
(6), 关闭 ResultSet,Statement 对象以及数据库连接, 释放相关资源
ORM(Object-Relational-Mapping) 对象关系映射, 将 JavaBean 和数据库对象进行相互的转换.
1.2 常见持久化框架
Hibernate,MyBatis,JPA,Spring JDBC
2.0 Mybatis 简介
MyBatis 的前身是 iBATIS, 是 Clinton-Begin 在 2001 年发起的一个开源项目, 最初侧重于密码软件的开发, 后来发展成为一款基于 Java 的持久层框架. 2004 年 Clinton 将 iBATIS 的名字和源码捐赠给了 Apache 软件基金会, 接下来的 6 年中, 开源软件世界发生了巨大的变化, 一切开发实践, 基础设施, 许可, 甚至数据库技术都彻底改变了. 2010 年核心开发团队决定离开 Apache 软件基金会, 并且将 iBATIS 改名为 MyBatis.
MyBatis 是一款优秀的支持自定义 SQL 查询, 存储过程和高级映射的持久层框架, 消除了几乎所有的 JDBC 代码和参数的手动设置以及结果集的检索. MyBatis 可以使用 xml 或注解进行配置和映射, MyBatis 通过将参数映射到配置的 SQL 形成最终执行的 SQL 语句, 最后将执行 SQL 的结果映射成 Java 对象返回.
与其他的 ORM(对象关系映射) 框架不同, MyBatis 并没有将 Java 对象与数据库表关联起来, 而是将 Java 方法与 SQL 语句关联. MyBatis 允许用户充分利用数据库的各种功能, 例如存储过程, 视图, 各种复杂的查询以及某数据库的专有特性. 如果要对遗留数据库, 不规范的数据库进行操作, 或者要完全控制 SQL 的执行, MyBatis 将会是一个不错的选择.
与 JDBC 相比, MyBatis 简化了相关代码, SQL 语句在一行代码中就能执行. MyBatis 提供了一个映射引擎, 声明式地将 SQL 语句的执行结果与对象树映射起来. 通过使用一种内建的类 xml 表达式语言 SQL 语句可以被动态生成.
2.1 Mybatis 整体架构
MyBatis 整体分为三层: 基础支持层, 核心处理层, 接口层
具体的模块, 后面章节会深入讨论.
2.2 Mybatis SQL 执行流程
SQL 语句的执行涉及各个组件, 其中比较重要的是 Executor,StatementHandler,ParameterHandler 和 ResultSetHandler.
Executor 主要负责一级缓存和二级缓存, 并提供是事务管理的相关操作, 它会将数据库相关操作委托给 StatementHandler 完成, StatementHandler 首先通过 ParammeterHandler 完成 SQL 的实参绑定, 然后通过 java.sql.Statement 对象执行 sql 语句并得到结果集 ResultSet, 最后通过 ResultSetHandler 完成结果集的映射, 得到对象并返回. 如下图所示:
2.3 Mybatis 源码
Mybatis 源码地址 https://github.com/mybatis/mybatis-3
2.4 Mybatis 书籍推荐
刘增辉 《MyBatis 从入门到精通》
徐郡明 《MyBatis 技术内幕》 重源码
2.5 Mybatis 网址推荐
MyBatis3 官方中文文档 http://www.mybatis.org/mybatis-3/zh/index.html
大牛祖大俊的博客 https://my.oschina.net/zudajun?q=Mybatis
Mybatis 系列文章内容来自一些大牛的网络博客和 Mybatis 技术书籍, 主要用于记录, 汇总和结合一些自己的想法. 分享给大家一起学习
失控的阿甘, 乐于分享, 记录点滴
来源: https://juejin.im/post/5c7cbfb851882546c00d5460