解决mybatis二级缓存脏读问题

mybatis的二级缓存很鸡肋,很多人都放弃掉,但是放弃就会有新的麻烦

1.如果用springCache来玩,你挨个挨个的去标注解?吃力吃苦受累还不讨好,因为注解分散在无数个类里的无数个方法上面,更新,维护,查找,换血等都变得十分艰难,换血啥的我其实没想太多,主要是我很懒,我真的不想为了缓存写代码,连注解都嫌麻烦。

2.如果你用redisTemplate来玩,你的代码会无比琐碎和臃肿,到处是因为所以否则然后这样的东东,反正我很懒,我坚决不要那么痛苦

3.其它好玩又爽玩的方式,目前我是没找着,找着了再说

4.最爽玩的方式就是一行代码都不写,缓存能全自动管理,mybatis已经干了这样的事,只是干得不好而已,所以我们需要一个大神写的插件来弥补mybatis的缺陷,插件地址: https://github.com/LuanLouis/mybatis-enhanced-cache

5.这个插件使用很简单,简单到你几乎不用动脑子,拷贝粘贴就完事了,插件包里有作者的demo,我也懒得打字,不说了。只有一个有意思的地方,那就是这个插件实现的效果:图我也懒得贴了,简单描述下。

6.1个简单的联表查询,比如,部门表和员工表,查询结果会放在缓存里(假设你想让这个查询结果缓存),问题是,如果更新了员工表,那么这个联表查询的结果在缓存里的数据就是老数据。怎么办?你更新了员工表然后写代码去更新这个缓存?如果几十张表呢?每一张表都可能被更新,那你是不是要吐血?使用这个插件后,你就不用那么麻烦了,在XML文件里配置一下就完事了(作者demo里有示例)效果还是很nice的

7.整合好这个插件,再把mybatis-redis-1.0.0-beta2粘贴进来,超级简单的配置一下,缓存数据就被redis接管过来了,然后,,,,安安心心的写业务代码,关于缓存,你不需要理会它,,最后还是感谢这位大神,尽管不知道他姓甚名谁,估计是很帅的靓仔。

参考:https://www.jianshu.com/p/cf32582169db

你可能感兴趣的:(java)