MyBatis
2023-06-09 14:36:20 9 举报
AI智能生成
登录查看完整内容
MyBatis
作者其他创作
大纲/内容
支持原生 SQL
SQL 与代码解耦
简单易用
SQL 调优灵活
无法生成 SQL(可使用 Plus)
数据库移植性差
基本特点
Hibernate
Spring Data JPA
与其他框架对比
SqlSessionFactory
Executor
SqlSession
StatementHandler
ParameterHandler
ResultSetHandler
TypeHandler
Handler
主要对象
预编译防止 SQL 注入:#{}
插入后获取自增 id
动态 SQL 标签
使用须知
基本原理
拦截器链
作用点
分页插件:mybatis-pagehelper
常用插件
插件
集成 Spring
功能扩展
解析 <properties> 标签
解析 <settings> 标签
处理日志相关组件
解析 <typeAliases> 标签
解析 <plugins> 标签
解析 <objectWrapperFactory> 标签
解析 <objectFactory> 标签
解析 <reflectorFactory> 标签
解析 <environments> 标签
解析 <databaseIdProvider> 标签
解析 <typeHandlers> 标签
解析 <mappers> 标签
解析 mybatis-config.xml
获取 <mapper> 标签中的 namespace 属性并检查
StrictMap
处理 <cache> 标签
CacheRefResolver
处理<cache-ref>标签
解析 <id>、<result>、<constructor> 标签
解析 <association> 和 <collection> 标签
解析 <discriminator> 标签
解析 <resultMap> 标签
解析 Mapper.xml
处理 <include> 标签
处理 <selectKey> 标签
处理 SQL 语句
解析 SQL 语句
初始化
OGNL 表达式语言
SQL 解析上下文:DynamicContext
StaticTextSqlNode
MixedSqlNode
TextSqlNode
IfSqlNode
WhereSqlNode
SetSqlNode
TrimSqlNode
PrefixedContext
ForeachSqlNode
ChooseSqlNode
VarDeclSqlNode
组合模式:SqlNode
#{} 占位符处理:GenericTokenParser
ParameterMappingTokenHandler
解析属性和占位符:SqlSourceBuilder
DynamicSqlSource
RawSqlSource
StaticSqlSource
SQL 管理:SqlSource
动态 SQL 解析
结果集映射
Statement
SQL 执行
核心处理层
原生 JDBC 执行流程
ORM 实现
JDBC
核心字段
初始化流程
获取方法信息
记录 conflictingXxx 集合
解决方法签名冲突
核心方法
构造方法
Class 封装:Reflector
反射执行方法:Invoker
Reflector 构造:ReflectorFactory
反射工厂:ObjectFactory
PropertyTokenizer
PropertyCopier
PropertyNamer
属性解析工具
类元信息:MetaClass
BaseWrapper
BeanWrapper
CollectionWrapper
MapWrapper
对象元信息:ObjectWrapper
元对象:MetaObject
反射管理
LongTypeHandler
自定义 TypeHandler
类型管理:TypeHandler 和 BaseTypeHandler
jdbcTypeHandlerMap
typeHandlerMap
allTypeHandlersMap
NULL_TYPE_HANDLER_MAP
读取 @MappedJdbcTypes 注解
读取 @MappedTypes 注解
register
注册
查询
类型注册与查询:TypeHandlerRegistry
别名管理:TypeAliasRegistry
类型关系
适配器模式
静态代理
JDK 动态代理
代理模式
JDBC Logger
日志框架
非池化数据源:UnpooledDataSource
连接对象:PooledConnection
连接池状态:PoolState
获取连接:popConnection
释放连接:pushConnection
检测连接可用性:isValid
池化数据源:PooledDataSource
数据源工厂:DataSourceFactory
JdbcTransactionFactory
ManagedTransactionFactory
事务工厂:TransactionFactory
事务管理
Mapper 注册:MapperRegistry
对象动态代理:MapperProxy 和 MapperProxyFactory
SQL 执行:MapperMethod
Mapper 映射
基本配置
作用域:Session/Statement
HashMap 实现
默认开启
一级缓存
作用域:Mapper(namespace)
支持 ehcache 等缓存实现
可配置剔除策略、刷新间隔、缓存数量
二级缓存
实现基本能力:PerpetualCache
BlockingCache
FifoCache
LruCache
SoftCache
WeakCache
缓存装饰器
装饰器模式:Cache
缓存管理
基础支撑层
MyBatis
0 条评论
回复 删除
下一页