分页
减少数据得到处理量
limit分页
mybatis实现分页:接口、mapperr.xml、测试
RowBounds类实现分页
分页插件PageHelper
复杂查询环境搭建
导入lombok
建实体类
建mapper接口
简历mapper.xml核心配置恩建注册绑定mapper接口文件
在
测试
多对一
查询所有学生生对应的老师信息
复杂查询用resultmap
association:对象【子查询,按照查询嵌套处理】
collection:集合
一对多
缓存简介
第一次查出的结果,暂存到内存中
再次查询,直接从内存中查询
mybatis一级缓存
一级缓存默认是开启的,只在一次sqlsession中有效
一级缓存就是一个map
一级缓存也叫本地缓存:SqlSession
与数据库同一次会话期间查询到的数据会放在本地缓存中
以后如果需要获取相同的数据,直接从缓存中拿,没必要再去查询数据库
缓存失效:
缓存使用LRU【最少使用算法】来清除不需要的缓存
查询不同的
增删改操作可能会改变原来的数据,不定刷新缓存
二级缓存
在配置文件中【config】的settings里添加
//显示开启全局缓存
<setting name="cacheEnabled value="true"/>
在要使用二级缓存的mapper中开启,只需要在你的sql映射文件中【mapper.xml】添加一行如下,即可
<cache/>
二级缓存也叫全局缓存,一级缓存作用域太低了,所以诞生了二级缓存
基于namespace级别的缓存,一个名称空间,对应一个二级缓存
工作机制:
一个会话查询一条数据,这个数据就会被放在当前会话的一级缓存中
如果当前会话关闭了,这个会话对应的一级缓存就没了,但我们想要的是,会话关闭了,一级缓存中的数据被保存到二级缓存中
新的会话查询信息,就可以从二级缓存中获取内容
不同的mapper查出的数据会放在自己对应的缓存map中
mybatis缓存原理
第一次查询走数据库,查出结果放在一级缓存中
二级缓存开启后,一级缓存关闭后就会存放到二级缓存中
自定义缓存
ehcache:是一种广泛使用的java分布式缓存,主要面向通用缓存【二级缓存,在mapper文件中配置,配置之前需要多导包】
总结