核心组件
SqlSessionFactoryBuilder
通过配置或代码生成SqlSessionFactory
SqlSessionFactory = new SqlSessionFactoryBuilder().build()
SqlSessionFactory
使用工厂模式(不需知道内部如何实现,生成新的对象),生成SqlSession对象
SqlSession = SqlSessionFactory.openSession()
SqlSession
既可以发送SQL,也可以获取Mapper接口,还能控制数据库事务
SQL Mapper
由一个java接口和xml文件或注释构成的映射器,mybatis默认情况下提供自动映射,只要SQL返回的列名和POJO能够对应起来
生命周期
SqlSessionFactoryBuilder
创建完SqlSessionFactory就可以销毁了
SqlSessionFactory
其生命周期等同于mybatis的应用周期,一般作为单例被共享
SqlSession
存在业务请求中,处理完请求应释放资源
Mapper
小于等于SqlSession生命周期
常用配置
cacheEnabled
缓存全局开关,默认为开
lazyLoadingEnabled
延迟加载的全局开关,默认为false
延迟加载:先从单表查询、需要时再从关联表去关联查询,大大提高数据库性能,因为查询单表要比关联查询多张表速度要快
aggressiveLazyLoading
默认false
分页
1 | //在dao层添加一个参数 |
缓存
- 二级缓存是范围在mapper (需要手动开启)
- 一级缓存是范围在sqlsession (默认开启)