MyBatis 的快取機制屬於本地快取,適用於單機系統,它的作用是減少資料庫的查詢次數,提高系統效能。
MyBaits 中包含兩級本地快取:
一級快取和二級快取的主要區別如下:
MyBatis 一級快取是自帶的快取,預設開啟,且無法關閉。而二級快取預設是關閉的,因此我們只需要掌握二級快取的開啟即可。
二級快取開啟需要兩步:
完整範例實現如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mybatis.demo.mapper.StudentMapper">
<cache/>
<select id="getStudentCount" resultType="Integer" useCache="true">
select count(*) from student
</select>
</mapper>
編寫單元測試程式碼:
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class StudentMapperTest {
@Autowired
private StudentMapper studentMapper;
@Test
void getStudentCount() {
int count = studentMapper.getStudentCount();
System.out.println("查詢結果:" + count);
int count2 = studentMapper.getStudentCount();
System.out.println("查詢結果2:" + count2);
}
}
執行以上單元測試的執行結果如下:
從以上結果可以看出,兩次查詢雖然使用了不同的 SqlSession,但第二次查詢使用了快取,並未查詢資料庫。
MyBatis 的快取機制屬於本地快取,適用於單機系統,它的作用是減少資料庫的查詢次數,提高系統效能。MyBatis 本地快取有兩類:一級快取 SqlSession 級別,預設開啟不能關閉,二級快取 Mapper 級別,預設關閉,可以通過在 XML 中新增
本文已收錄到我的面試小站 www.javacn.site,其中包含的內容有:Redis、JVM、並行、並行、MySQL、Spring、Spring MVC、Spring Boot、Spring Cloud、MyBatis、設計模式、訊息佇列等模組。