一级缓存
Mybatis默认开启一级缓存,作用域是SqlSession,在同一个SqlSession中,执行相同的查询SQL,第一次会去数据库进行查询,并写到缓存中,第二次以后是直接去缓存中取;当执行SQL查询中间发生了增删改的操作,MyBatis会把SqlSession的缓存清空
二级缓存
Mybatis的二级缓存是指mapper映射文件,作用域SqlSessionFactory,多个SqlSession共享,需要手动开启二级缓存
<settings>
<setting name="cacheEnabled" value="true" />
</settings>
单个sql语句
<!--通过useCache来规定这个sql是否开启缓存,ture是开启,false是关闭-->
<select id="selectAllStudents" resultMap="studentMap" useCache="true">
SELECT id, name, age FROM student
</select>
在 mybatis-config.xml中开启二级缓存(全局)
<configuration>
<settings>
<setting name="cacheEnabled" value="true" />
.....
</settings>
....
</configuration>
mybatis有哪些分页方式?
逻辑分页:使用mybatis自带的RowBounds进行分页,会一次性查出所有数据,放到缓存中,再从缓存中拿到分页所需的数据(效率低)
物理分页:从数据库从查询所需条数的数据,如分页插件PageHelper,(常用)
使用拦截器机制进行处理,会在sql语句后面加limit
![5b8567034c2ccddd5770059ff9864aae.png](https://img-blog.csdnimg.cn/img_convert/5b8567034c2ccddd5770059ff9864aae.png)