开发者社区 问答 正文

Springboot项目中Mybatis分页和Redis缓存之间的冲突?报错

该项目是SpringBoot项目,

查询列表时,我在Controller层时加了分页,在Mapper层加了缓存注解

 

然后当使用Mapper层访问其他的业务时就报错了,比如我查询版本信息,结果在查询语句后面就自动加上了分页的参数。

 

当我把那个缓存注解去掉后就正常了。

错误原因:有可能是redis将mybatis的参数缓存下来了

求大神帮忙解决这个问题啊!!!!!!!!!

 

展开
收起
爱吃鱼的程序员 2020-06-07 17:07:44 1086 分享 版权
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
                        <p>缓存不建议放在mapper层</p>
    
                    
    
                            因为在service层里面还需要对查出来的数据进行处理,数据是动态改变的,所以只能将缓存放在mapper层。如果放在service层,那我就要每次调用那个方法的时候都要删缓存,再放缓存到redis,这样还不如不加
                        
    
                        <p>分页的代码放在service 层里面,在需要调用mapper前。另外,缓存指好好key,参数最好用对象传进去。</p>
    
                    
    
                            额,我一直都是在controller层写的分页,我项目经理也没说啥,然后刚刚百度了一下,还真是最好放在service层,受教了!!!
                        
    
                        <p>你这样写代码,要是在我们公司应该会被开除。</p>
    
    2020-06-07 17:08:09
    赞同 展开评论