在mybatis中缓存查询 - 可能的方式

时间:2017-09-26 16:15:19

标签: java mybatis

我在mybatis中写了很多查询。有什么方法可以缓存答案? 例如, SELECT * FROM someFun(#{someId}) 要么 SELECT count(*) FROM someFun(#{someId})

换句话说,我搜索只缓存这些我想要缓存的查询的方法(类似于注释,可能?) 当然,缓存应该取决于参数,e.q。 XML中的一些查询,但应重新计算不同的参数, 例如:

SELECT count(*) FROM someFun(2) -- compute
SELECT count(*) FROM someFun(2) -- cache
SELECT count(*) FROM someFun(2) -- cache
SELECT count(*) FROM someFun(3) -- compute
SELECT count(*) FROM someFun(2) -- cache
SELECT count(*) FROM someFun(3) -- cache

....
10 minuts
....
SELECT count(*) FROM someFun(3) -- compute
SELECT count(*) FROM someFun(2) -- compute
SELECT count(*) FROM someFun(3) -- cache
SELECT count(*) FROM someFun(2) -- cache

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您可以选择queries to cache以及您希望cache to flush的时间间隔。

两个选项均已记录在案。 在select和flushInterval上查找缓存

上的useCache

答案 1 :(得分:0)

您可以使用MyBatis 3缓存服务。只需将以下标记添加到您的映射器文件中即可。

<cache/>

您可以自定义缓存的运行方式。如果您要在10分钟后刷新缓存,请在映射器文件中添加以下代码。

<cache flushInterval="60000"/>

还有其他可用的自定义选项,您可以在MyBatis Cache上查看