当前使用版本(必须填写清楚,否则不予处理)

3.2.0

该问题是怎么引起的?(最新版上已修复的会直接close掉)

@CacheNamespace(implementation=MybatisRedisCache.class,eviction=MybatisRedisCache.class)缓存时,如果遇到分页,虽然能缓存分页,但是分页里的总条数跟页数会直接为0

重现步骤

@CacheNamespace(implementation=MybatisRedisCache.class,eviction=MybatisRedisCache.class)在mapper层加上缓存配置

报错信息

无,缓存失效时,查询的第一次是有页数跟条数,而第二次命中缓存后条数与页数直接为0

Comment From: ghost

不是缓存后导致的 是查询本来就是0 结果 total

Comment From: funky-eyes

不是缓存后导致的 是查询本来就是0 结果 total

这个很好辨别,total明显不是0,我数据库有数据,需要上图的话,随时发

Comment From: funky-eyes

不是缓存后导致的 是查询本来就是0 结果 total

而且我都说了,能分页,但是查询的时候total跟页数都是0的,如果total就是0,那我records哪来的数据,这个配置代码都贴上了,随便来个表,代码生成工具生成好了,直接把mapper上加上缓存注解,试一波就知道了

Comment From: qmdx

不是缓存后导致的 是查询本来就是0 结果 total

而且我都说了,能分页,但是查询的时候total跟页数都是0的,如果total就是0,那我records哪来的数据,这个配置代码都贴上了,随便来个表,代码生成工具生成好了,直接把mapper上加上缓存注解,试一波就知道了

MybatisRedisCache 这个类及简单 demo 提供一下

Comment From: miemieYaho

有数据还total为0?好好检查你的分页插件有没有生效

Comment From: funky-eyes

有数据还total为0?好好检查你的分页插件有没有生效

生效了,我马上提供demo

Comment From: funky-eyes

不是缓存后导致的 是查询本来就是0 结果 total

而且我都说了,能分页,但是查询的时候total跟页数都是0的,如果total就是0,那我records哪来的数据,这个配置代码都贴上了,随便来个表,代码生成工具生成好了,直接把mapper上加上缓存注解,试一波就知道了

MybatisRedisCache 这个类及简单 demo 提供一下

https://gitee.com/itCjb/demo 这是测试代码,使用方法也写在里面了,sql也附带了

Comment From: funky-eyes

有数据还total为0?好好检查你的分页插件有没有生效

demo已经奉上,希望大神有空看一眼

Comment From: miemieYaho

你pom里mp版本是3.1.1?

Comment From: funky-eyes

不好意思,pom传的有问题,真正的依赖在我里面的api模块项目里,现在在出差,等回去替换一下pom,非常抱歉 @miemieYaho

Comment From: funky-eyes

你pom里mp版本是3.1.1?

https://gitee.com/itCjb/demo 已经改正了,请大神运行试试,直接swagger进去,文件接口里的第一个接口分页查2次就知道了,页数1 条数2 查询第一次有total,控制台输出缓存没命中然后发出了sql有limit跟count,第二次就没了,直接为0 ,控制台输出命中缓存sql是没发出的,所以缓存里可能mp的缓存机制并没有把页数跟条数存储下来,所以找不到对应的条数跟页数就默认为0了

Comment From: funky-eyes

@miemieYaho @qmdx

Comment From: HiJackXD

@miemieYaho @qmdx 我这里也出现了这问题(3.1和3.2)。 第一页,第二页都正常,但是再次返回第一次,触发缓存后,count就变成0了。 如果我searchCount=false,我自己写sql语句查询count,和mp一模一样的查询语句,分页就没问题。

Comment From: miemieYaho

尝试使用 3.2.1.1-SNAPSHOT

Comment From: MkkOF

这个问题解决了么?我现在用的3.3.1版本还有total为0 的问题