MyBatis
简介
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
基本使用
配置:https://mybatis.org/mybatis-3/configuration.html
如何深入学习 MyBatis?
源码阅读计划
JDBC 规范
想要学好 MyBatis,JDBC 规范是必备的。
MyBatis 框架设计

API接口层
数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。
框架支撑层:包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。
MyBatis 的常用配置
MyBatis 的设计思想和设计原则
MyBatis 小技巧
MyBatis 插入数据时返回自增主键
开发过程中,我们往往需要在插入数据后获取当前记录自增后的id,可以使用 select last_insert_id();
来获取到;但是用了 MyBatis 之后怎么做呢?需要配合 useGeneratedKeys
和 keyProperty
, keyProperty的值为传入参数的属性名,Mybatis会自动把自增id的值赋给该属性, 而返回值仍为影响行数:
useGeneratedKeys: insert and update only, This tells MyBatis to use the JDBC getGeneratedKeys method to retrieve keys generated internally by the database, default is false
keyProperty: insert and update only, Identifies a property into which MyBatis will set the key value returned by getGeneratedKeys, or by a selectKey child element of the insert statement. Default: unset. Can be a comma separated list of property names if multiple generated columns are expected.
// xml 的方式
<insert id="insertAuthor" keyProperty="id" useGeneratedKeys="true">
insert into Author (id,username,password,email,bio)
values (#{id},#{username},#{password},#{email},#{bio})
</insert>
// or
<selectKey
keyProperty="id"
resultType="int"
order="BEFORE"
statementType="PREPARED">
......
</selectKey>
/// ---
// 实现原理参考:https://cofcool.github.io/tech/2017/11/06/Mybatis-insert-get-id
// 可见 MyBatis 帮我们处理了这种场景
MyBatis Plus
Todo 探索 MyBatis Plus 的增强
// MyBatis 的 BaseMapper 接口
com.baomidou.mybatisplus.core.enums.SqlMethod 定义了很多的 SQL 模版,根据模版来自动
生成 SQL 语句
MyBatis 源码分析
MyBatis 初始化流程分析
// SqlSessionFactoryBuilder
// 核心功能:
// 1. XML(XMLConfigBuilder) -> org.apache.ibatis.session.Configuration
// 2. Configuration -> SqlSessionFactory (DefaultSqlSessionFactory)
Configuration 是 Mybatis 的配置类,Mybatis 支持的所有配置都定义在这里
最后更新于
这有帮助吗?