Mybatis内容小结

59 阅读2分钟

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工具