整体架构 | 1. 接口层:SqlSession 2. 核心处理层:配置解析,参数映射,SQL解析,SQL执行,结果集映射,插件 3. 基础支持层:数据源,事务管理,缓存模块,Binding模块,反射,类型转换,日志,资源加载,解析器 |
|
主要核心部件 | SqlSession:和数据库交互 Executor:sql生成,和查询缓存,事务管理 StatementHandler:封装JDBC Statement ParameterHandler:参数 ResultSetHandler TypeHandler:java类型和jdbc数据类型映射和转换 MappedStatement:Mapper文件 <select..> SqlSource:将parameterObj,动态生成sql,封装到BoundSql对象 BoundSql:动态sql及参数 Configuration |
SimpleExecutor ReuseExecutor: Map<String, Statement> BatchExecutor |
查询缓存?? | 一级缓存:SqlSession,会话级别 二级缓存:mapper文件,应用级别 |
mybatis-redis |
分页 | RowBounds | |
Single Table CRUD | @identity $与#:#{}是sql的参数占位符'?' resultType与resultMap应用场景 MapperProxy parameterType三种形态 |
|
Relational Query | collection配置:一对多,one-many association配置:一对一 延迟加载策略:lazyLoadingEnabled=true 侵入式延迟配置 深度延迟配置 |
|
Annotain |
标签:<resultMap>、<parameterMap>、<sql>、<include>、<selectKey>,加上动态sql的9个标签
Mybatis执行批量插入,能返回数据库主键列表吗?last_insert_id