java面试必问13:MyBatis 一级缓存、二级缓存:从原理到脏数据,一篇讲透面试官:“MyBatis 的缓存机制是怎样的?一级缓存和二级缓存有什么区别?” 你:“一级缓存是 SqlSession 级别的,默认开启;执行增删改操作会自动清空缓存。二级缓存是 Mapper 级别,需要手动开启,可以在多个 SqlSession 之间共享数据。但二级缓存有个大坑——多表关联查询时非常容易产生脏数据,所以不建议在复杂业务场景中开启。” 面试官:“那二级缓存为什么容易产生脏数据?有什么解决方案吗?” 你:“……”