本文共 1100 字,大约阅读时间需要 3 分钟。
一级缓存是 SqlSession 级别的缓存,只要 SqlSession 没有 flush 或 close,它就存在。
此处调用findById方法
@Test public void cacheTest() throws IOException { inputStream = Resources.getResourceAsStream("SqlMapConfig.xml"); sessionFactory = new SqlSessionFactoryBuilder().build(inputStream); sqlSession = sessionFactory.openSession(); userDao = sqlSession.getMapper(IUserDao.class); //测试一级缓存 User user1 = userDao.findById(55); System.out.println(user1); User user2 = userDao.findById(55); System.out.println(user2); System.out.println(user1==user2); inputStream.close(); sqlSession.close(); }
//测试一级缓存 User user1 = userDao.findById(55); System.out.println(user1); sqlSession.close(); sqlSession = sessionFactory.openSession(); userDao = sqlSession.getMapper(IUserDao.class); User user2 = userDao.findById(55); System.out.println(user2); System.out.println(user1==user2); inputStream.close(); sqlSession.close();可见Mybatis默认开启了一级缓存,sqlSession未关闭则可以共享sqlSession已经查询出来的数据。
转载地址:http://ociwi.baihongyu.com/