mapper二级缓存和分页插件的问题

来源:6-2 多租户实现

慕仙7039684

2019-08-27 21:02

mapper层二级缓存和分页里多租户解析器的问题,

A租户第一次执行了一个语句,还没有缓存,通过分页插件动态加了租户条件,取出并缓存了数据Adata,但是缓存的key是不带租户条件的。

B租户执行了和A租户相同的语句,命中了Adata的缓存(缓存key同样不带租户条件),直接取出了Adata的数据,导致数据不对

讲道理的话,A和B如果都是先经过分页插件加上了租户过滤条件,再判断缓存的话,就不会命中错误的缓存。

二级缓存也和分页查询总数有冲突,列表查询的时候,命中的缓存,就不会再去查询总数,导致返回的total是0

不知道是否是使用方式不对,如何解决,查很久的资料了,求指导一下

写回答 关注

3回答

  • 老猿
    2019-08-27 21:23:11
    已采纳

    如果你可以考虑关闭mapper层二级缓存,将缓存放到service层的话。那么修改后再试试,看是否依然还存在问题,如果还有问题,可以再反馈给我。

    老猿 回复慕仙7039...

    呵呵,没有关系,不用抱歉,青苗是MP所属开发组织的负责人,我想下一版本应该能解决这个问题。

    2019-11-01 10:57:56

    共 10 条回复 >

  • 老猿
    2019-08-27 21:19:29

    MP的作者建议缓存放到 service 层,你可以自定义自己的 BaseServiceImpl 重写注解父类方法,继承自己的实现。

  • qq_请叫我大佬_2
    2020-06-03 10:09:07

    哥, 这个问题怎么解决啊

MyBatis-Plus进阶

MyBatis-Plus框架进阶课程

23296 学习 · 118 问题

查看课程

相似问题