1、Mybatis基本概念
2、Mybatis基本原理
3、Mybaits的CRUD操作
4、Mybaits的Dao原理
- 解析XML,生成sqlnode和mapperstatement
- JDK动态代理,返回了一个Dao接口的代理对象,这个代理对象的处理器是MapperProxy对象,也就是@autowired注入的
- 执行代理对象的方法,本质上是invoke(0-->sqlsession->mapperstatement-->执行
5、动态SQL原理
If/where/for each
6、连接池
7、事务管理
事务就设置为自动提交
8、多表操作(一对一/多对一/一对多/多对多(有中间表))
传统操作:新增一个POJO作为resultType
Mybatis的操作:
- 一对一、多对一关系映射:从表方应该包含一个主表方的对象引用
- 一对多、多对多关系映射:主表方法应该包含一个从表方的集合引用
9、一级缓存(默认开启)和二级缓存
- 使用场景:数据不经常改变的才可以用缓存,其他的不能用
- 一级缓存:sqlsession的缓存。当调用 SqlSession 的修改,添加,删除,commit (),close () 等方法时,就会清空一级缓存。
- 二级缓存: 二级缓存是 mapper 映射级别的缓存,多个 SqlSession 去操作同一个 Mapper 映射的 sql 语句,多个 SqlSession 可以共用二级缓存,二级缓存是跨 SqlSession 的。
- 数据一致性,一旦不是查找,不从缓存中走
10、懒加载(延迟加载)
- 情况:一对一/多对一立即加载;一对多/多对多懒加载
- 原理:将多表操作的复合SQL拆成两个SQL, 在需要的时候再执行
11、XML和注解开发的区别
- 对于简单的SQL注解开发更好,但是对于复杂的SQL,比如多表操作,XML只需要一个复杂的SQL,而注解需要多个SQL
- l 另外,XML 将SQL和代码分开了,解耦
12、PageHelper分页插件
13、通用Mapper(生成SQL)插件
14、EasyCode工具