我正在使用MyBatis的3.2.7版本,我想要做的是能够在使用应用程序之前预先填充缓存,所以在启动时。
所以在实际应用中说,我想搜索特定的用户信息:
<select id="selectSpecificUser" parameterType="int">
SELECT *
FROM users
WHERE userid=#{id}
</select>
因此,当调用它时,它将检查缓存,如果它不存在,那么它将搜索数据库。有没有办法用这个表中的每个记录预先加载这个缓存,这样当调用这个方法时,它会从缓存而不是数据库中选择它?
答案 0 :(得分:1)
尝试将以下标记添加到 SQL映射文件:
<cache/>
这将在 Mybatis 中启用全局缓存,并且默认情况下应该缓存映射器文件中SELECT
个语句的所有结果(受各种条件限制) ,包括 LRU驱逐)。
您可以通过在程序中的 setup (或等效)方法中手动调用SELECT
语句来自行加热缓存(而不是等待第一次用户引发的调用)正在加载映射文件。
该链接中还有一些信息可以更改默认行为,包括类型,大小和刷新间隔;以及如果您的需求非常具体,可以创建自定义缓存。