# MyBatis 框架如何实现分页

分页分为两种

  • 逻辑分页:将所有数据查出来,再在内存中进行分页处理
  • 物理分页:直接在数据库中进行分页

具体实现:

  • 自己写 SQL 进行分页 (物理)
  • 使用拦截器进行分页 (物理)
  • 使用 PageHelper 进行分页 (物理)
  • 使用 RowBounds 进行分页 (逻辑)

# MyBatis 框架里面的缓存机制

MyBatis 中有两级缓存:一级缓存,二级缓存 (都是 HashMap)

一级缓存失效的几种情况

  • 不同的 SqlSession 对应不同的一级缓存
  • 同一个 SqlSession 但是查询条件不同
  • 同一个 SqlSession 两次查询期间执行了任何一次增删改操作
  • 同一个 SqlSession 两次查询期间手动清空了缓存

二级缓存

在 SqlSession 关闭 (即 DAO 操作) 后将内容写入二级缓存

二级缓存默认关闭,开启二级缓存,需要同时有如下两项

application.yml
	mybatis:
		configuration:
			cache-enable:true
Mapper.xml
<cache/>

二级缓存是跨 SqlSession, 多个 SqlSession 可以共用同一个二级缓存;

二级缓存是 mapper 级别的缓存,根据 mapper 的 namespace 区分,两个 mapper 的 namespace 相同

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

KagurazakaAsahi 微信支付

微信支付