我使用的是3.2.7版本的MyBatis,我想做的是在使用应用程序之前预先填充缓存,这样就可以启动了。
假设在实际应用中,我想搜索特定用户的信息:
<select id="selectSpecificUser" parameterType="int">
SELECT *
FROM users
WHERE userid=#{id}
</select>所以当它被调用时,它将检查缓存,如果它不在那里,那么它将搜索数据库。有没有办法用这个表中的每条记录预加载这个缓存,这样当这个方法被调用时,它就会从缓存而不是从DB中提取它?
发布于 2014-07-29 09:43:51
尝试将以下标记添加到SQL映射文件中
<cache/>这将在Mybatis中启用全局缓存,并且默认情况下应该在映射器文件中缓存来自SELECT语句的所有结果(取决于各种条件,包括LRU驱逐)。
您可以通过在加载映射器文件的程序的setup (或等效方法)中手动调用该SELECT语句来自己预热缓存(而不是等待用户发起的第一次调用)。
Mybatis Caching Info
该链接中还包含更改默认行为的信息,包括类型、大小和刷新间隔;如果您的需求非常特殊,还可以创建自定义缓存。
https://stackoverflow.com/questions/24955979
复制相似问题