MyBatis关联查询,其中关联表有数据更新,如解决缓存更新的问题

最近在做的项目中有一个消息功能,其中像系统消息的实现,就是在消息表中只有一条记录,然后对应每个用户要标记为删除或者已读,就在另一个表中用一条记录的标记。

MyBatis关联查询,其中关联表有数据更新,如解决缓存更新的问题

这样设置删除或已读标记的时候,是在另一个表的 Mapper.xml 中操作的,也就不会更新消息表的缓存。

有人试图在ABMapper.xml 中采用cache-ref才解决这个问题,不好使。不知道是不是我配得不对。 ABMapper.xml中直接引用A以及B的命名空间, <cache-ref namespace="com.abcd.mapper.AMapper"/> <cache-ref namespace="com.abcd.mapper.BMapper"/>

 

解决方法:

1、对应的查询禁用缓存。

2、把更新B表的update的语句放到AMapper.xml中,这样的话在AMapper.xml做更新B的操作,也就会刷新A的缓存,这样再去select关联查询B表就可以查询到更新后的数据了。

但是这样仍有问题,就是B表的查询还是存在问题。

3、在应用层强制更新

MyBatis关联查询,其中关联表有数据更新,如解决缓存更新的问题

消息表的数据没有任何改变,但我强制更新一下。这样对于查询比更新多得多的情况应该是比较合适的。

4、自定义缓存

具体实现就看你自己了,完全可以自己定义规则。