My Batis 分为 1级缓存和 2级缓存
一级缓存是在 SqI Session 上的缓存, 二级缓存是在 SqlSessionFactory 上的缓存。
同 对象进行了两次获取 但是实际只有 SQL 被执行,其原因是代码 使用了同 SqlSession 对象获取数据。当 SqlSession 次通过 SQL 参数获取对 象后,它就会将其缓存起来,如果下次 SQL 参数都没有发生变化, 并且缓存没有超时 或者声明需要刷新时 那么它就会从缓存中获取数据,而不是通过 SQL 获取了。
一级缓存是在 SqlSession 层面的,对于不同的 SqlSession 对象是不能共享的。为了使 SqlSession 对象之间共享相同的缓存,有时候需要开启 级二缓 存,开启二级缓存很简单,只要在映射文件( RoleMapper.xml 上加入代码:
它需要实现 Seria lizable 接口。