官方指导文档
- https://mybatis.org/mybatis-3/zh/configuration.html
核心特性
- 连接池对连接管理
- SQL与代码分离
- 结果集映射,参数映射,动态SQL
- 重复Sql提取
- 缓存管理
- 插件机制
- 关联结果集(1对1,1对多),N+1
- 懒加载
核心配置
1. mybatis-config.xml
- configuration,properties
- setting
- cacheEnabled:二级缓存开关,默认True
- localCacheScope:一级缓存域(无法关闭一级缓存,只能设置域)
- proxyFactory:懒加载代理工厂配置
- lazyLoadingEnabled:懒加载开关默认false
- aggressiveLazyLoading
- lazyLoadTriggerMethods
- defaultExecutorType:默认SIMPLE(SIMPLE, REUSE, BATCH)
- logImpl(日志实现类)
- typeAliases,typeHandlers,objectFactory,plugins,environments,transactionManager,dataSource,mappers
2. mapper.xml
- cache,cache-ref,resultMap,sql,insert,update,delete,select
批量插入,批量更新实现
- executorType=Batch(分批发送SQL至服务器)
- 动态标签拼接批量sql
- 缺点:需考虑sql长度防止抛出sql allow max packadge size异常
spring集成
- SqlSessionFactoryBean
- SqlSessionTemplate
- 扫描mapper接口由(MapperFactoryBean)生成MapperFactoryProxy注入spring容器
- Mapper代理调用Jdbc
分页
- 逻辑翻页(RowBounds - mybatis默认支持)
- 物理分页:(github.PageHelper - 第三方插件)
延迟加载
- proxyFactory:懒加载代理工厂配置代理类型(JavaSSIST,CGLIB)
- 延迟加载开关