java - 使用 MyBatis 进行批量预缓存

标签 java caching mybatis

我使用的是 MyBatis 3.2.7 版本,我想要做的是能够在应用程序使用之前预先填充缓存,以便在启动时。

所以说在实际的应用程序中,我想搜索特定的用户信息:

<select id="selectSpecificUser" parameterType="int">
        SELECT  *
        FROM    users
        WHERE userid=#{id}
    </select>

因此,当调用此函数时,它将检查缓存,如果不存在,则会搜索数据库。有没有办法用该表中的每条记录预加载此缓存,以便在调用此方法时,它从缓存而不是数据库中获取它?

最佳答案

尝试将以下标记添加到您的SQL 映射文件:

<cache/>

这将在Mybatis中启用全局缓存,并且默认情况下应该缓存映射器文件中SELECT语句的所有结果(取决于各种条件,包括LRU 驱逐)。

您可以通过在 setup (或等效)方法中手动调用 SELECT 语句来自行预热缓存(而不是等待第一次用户引发的调用)在您正在加载映射器文件的程序中。

Mybatis Caching Info

该链接中还提供了更改默认行为的信息,包括类型、大小和刷新间隔;如果您的需求非常具体,还可以创建自定义缓存。

关于java - 使用 MyBatis 进行批量预缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24955979/

相关文章:

java - 我执行了dao层的mybatis update方法,但是数据库没有更新

spring-boot - Spring Data JDBC 与 MyBatis 找不到自定义查询

java - 在java中将字符串解析为 boolean 值

java - 在 CSS (JavaFX) 中为 TableView 设置样式

javascript - React.js + 中间人如何用于缓存和 SEO?

winapi - 如何以编程方式清除 MSIE/WinInet 缓存?

java - Spring DAO可以合并到Service层吗?

java - 如何在 java 中从 couchbase 获取 json 文档?

java - 从 gitlab-ci.yml 启动/停止远程服务器上的 tomcat

performance - Google 的新 mod_pagespeed 是否只是为不知道如何正确做事的网站管理员提供的另一种工具?