mybatis有两个级别的缓存,一个级别是session级别的缓冲,另外一个是sessionFactory级别的缓存。
session级别的缓存(一级缓存)
在mybatis中,启动一个session,默认就会启用session的级别的缓存。不需要配置。
sessionFactory级别的缓存(二级缓存)
如果要启用sessionFactory级别的缓存,需要配置。
第一步,需要在mybatis主配置文件中启用二级缓存
第二步,在需要启用二级缓存的mapper文件中增加cache子标签
注意:如果不想让这个mapper文件中所有的方法都启用二 级缓存,可以对select标签进行单独的配置:
userCache默认是true,如果设置成false,则该条sql不启用二级缓存。
第三步,需要把查询到的实体类实现序列化的接口
第四步,测试
/** * 测试session级别的缓存 */ public class Test06 { public static void main(String[] args) { SqlSession session1 = SqlSessionFactoryUtil.getSession(); //第一次查询所有用户的数据 EmpDao empDao1 = session1.getMapper(EmpDao.class); List<Emp> emps1 = empDao1.listAll(); System.out.println("员工总人数:"+emps1.size()); System.out.println("====="); session1.close(); SqlSession session2 = SqlSessionFactoryUtil.getSession(); //第二次次查询所有用户的数据 EmpDao empDao2 = session2.getMapper(EmpDao.class); List<Emp> emps2 = empDao2.listAll(); System.out.println("员工总人数:"+emps2.size()); System.out.println("====="); session2.close(); } }
注意:session记得关闭。