我使用的是 MyBatis 3.2.7 版本,我想要做的是能够在应用程序使用之前预先填充缓存,以便在启动时。
所以说在实际的应用程序中,我想搜索特定的用户信息:
<select id="selectSpecificUser" parameterType="int">
SELECT *
FROM users
WHERE userid=#{id}
</select>
因此,当调用此函数时,它将检查缓存,如果不存在,则会搜索数据库。有没有办法用该表中的每条记录预加载此缓存,以便在调用此方法时,它从缓存而不是数据库中获取它?
最佳答案
尝试将以下标记添加到您的SQL 映射文件:
<cache/>
这将在Mybatis中启用全局缓存,并且默认情况下应该缓存映射器文件中SELECT
语句的所有结果(取决于各种条件,包括LRU 驱逐)。
您可以通过在 setup (或等效)方法中手动调用 SELECT
语句来自行预热缓存(而不是等待第一次用户引发的调用)在您正在加载映射器文件的程序中。
该链接中还提供了更改默认行为的信息,包括类型、大小和刷新间隔;如果您的需求非常具体,还可以创建自定义缓存。
关于java - 使用 MyBatis 进行批量预缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24955979/