MyBatis的功能架构
API接口层
参见下方API
数据处理层
参数映射:指的是对于java 数据类型和jdbc数据类型之间的转换
SQL解析:SQL语句配置、解析、动态生成
SQL执行:Executor
结果映射处理:
基础支撑层
连接管理
事务管理
配置加载
缓存机制
SQL语句的配置方式
- 基于注解
- 基于XML文件
MyBatis Java API
SqlSessionFactoryBuilder
- 创建SqlSessionFactory实例
- build()方法从不同的资源中创建:InputStream或Configuration
- InputStream可选的参数是 environment 和 properties
- mybatis提供Resources 工具帮助加载资源文件
Reader getResourceAsReader(String resource)
Properties getResourceAsProperties(String resource)
InputStream getResourceAsStream(ClassLoader loader, String resource)
SqlSessionFactory
- 调用openSession()创建SqlSession实例
- 可选参数有:自动提交、事务隔离级别、预处理、自定义连接、执行器类型
SqlSession
语句执行方法
T selectOne(String statement)
List selectList(String statement)
Map selectMap(String statement, String mapKey)
int insert(String statement)
int update(String statement)
int delete(String statement)
事务控制方法
void commit()
void commit(boolean force)
void rollback()
void rollback(boolean force)
清理 Session 级的缓存
void clearCache()
关闭SqlSession
void close()
使用映射器
T getMapper(Class type)
动态 SQL
MyBatis 通过传入的参数值,使用 Ognl 来动态地构造SQL语句
- if
- choose (when, otherwise)
- trim (where, set)
- foreach
Select执行过程分析
1.创建SqlSession对象
2.为SqlSession传递参数:Statement Id和params
- Statement Id对应xml配置文件里的sql语句
- params 是传递的查询参数
分析源码可知
1.根据Statement Id,在mybatis 配置对象