慕仙7039684
2019-08-27 21:02
mapper层二级缓存和分页里多租户解析器的问题,
A租户第一次执行了一个语句,还没有缓存,通过分页插件动态加了租户条件,取出并缓存了数据Adata,但是缓存的key是不带租户条件的。
B租户执行了和A租户相同的语句,命中了Adata的缓存(缓存key同样不带租户条件),直接取出了Adata的数据,导致数据不对
讲道理的话,A和B如果都是先经过分页插件加上了租户过滤条件,再判断缓存的话,就不会命中错误的缓存。
二级缓存也和分页查询总数有冲突,列表查询的时候,命中的缓存,就不会再去查询总数,导致返回的total是0
不知道是否是使用方式不对,如何解决,查很久的资料了,求指导一下
如果你可以考虑关闭mapper层二级缓存,将缓存放到service层的话。那么修改后再试试,看是否依然还存在问题,如果还有问题,可以再反馈给我。
MP的作者建议缓存放到 service 层,你可以自定义自己的 BaseServiceImpl 重写注解父类方法,继承自己的实现。
哥, 这个问题怎么解决啊
MyBatis-Plus进阶
23296 学习 · 118 问题
相似问题