常见问题
- 开启二级缓存时、修改数据后没有清空缓存、导致从缓存拿到老数据
- 现象:使用
@CacheNamespace(implementation = LoggingEhcache.class)
开启二级缓存后,在使用@Resource
注入 Mapper 时,即使数据已更新,查询仍返回旧数据。 - 原因:
@Resource
和@Autowired
的注入策略不同,导致最终使用的 SqlSessionTemplate 不是 MyBatis-Plus 专门为二级缓存配置的那一个 - 解决方案:在 Spring 环境中,始终优先使用
@Autowired
注入 MyBatis Mapper,确保缓存能在数据修改后正确失效。
- 现象:使用