MyBatis查询缓存实例详解查询缓存实例详解
查询缓存的使用,主要是为了提高查询访问速度。这篇文章主要介绍了MyBatis查询缓存,需要的朋友可以参考下
查询缓存的使用,主要是为了提高查询访问速度。将用户对同一数据的重复查询过程简化,不再每次均从数据库查询获取结果
数据,从而提高访问速度。
MyBatis的查询缓存机制,根据缓存区的作用域(生命周期)可划分为两种:一级缓存与二级缓存
一、一级查询缓存一、一级查询缓存
MyBatis一级缓存是基于org.apache.ibatis.cache.impl.PerpetualCache类的HashMap本地缓存,其作用域是Sqlsession。在同
一个Sqlsession中两次执行相同的sql语句,第一次执行完毕后,会将查询结果写入到缓存中,第二次会从缓存中直接获取数
据,而不再到数据库中进行查询,从而提高查询效率。
当一个Sqlsession结束后,该Sqlsession中的一级缓存也就不存在了。MyBatis默认一级缓存是开启状态,且不能关闭。
1.一级缓存的存在性证明一级缓存的存在性证明
测试类:
//证明一级缓存的存在
@Test
public void test01(){
//第一次查询
Student student = dao.selectStudentById(2);
System.out.println(student);
//第二次查询
Student student2 = dao.selectStudentById(2);
System.out.println(student2);
}
mapper:
<mapper namespace="com.hcx.dao.IStudentDao">
<select id=selectStudentById resultType="com.hcx.beans.Student">
select * from student where id=#{id}
</select>
</mapper>
控制台:
执行完后,发现只执行了一次从DB中的查询,第二次的结果是直接输出的。说明,第二次是从Sqlsession缓存中读取的。