学习Mybatis中的缓存以减少对数据库的蹂躏

一、一级缓存

通过Mybatis自带缓存,且默认开启一级缓存,不开启二级,当使用同样的sqlsession对象查询相同数据时,只有第一次查询会向数据库发送查询语句,并将查询结果放入session缓存中,之后查询相同数据时,直接在缓存中取用即可。

commit可以清除缓存。

 

二、当二个或多个sqlsession对象查询相同数据时,那么可以开启二级缓存。

在conf.xml文件中的开启日志setting标签下,添加标签<setting name="cacheEnabled" value="true">

并在想要查询的数据库操作语句的mapper.xml文件中添加声明开启二级缓存。

<cache/>即可。

然后运行,会出现序列化问题。

 

 然后我们将会涉及到的实体类全部序列化,在实体类添加接口。

implements Serializable。

之后在测试类中:

public static void queryPerson2_yijihuancun2() throws IOException{
					//加载配置文件
					Reader reader = Resources.getResourceAsReader("conf.xml");
					//SqlsessionFactory -- conection
					 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
					 SqlSession session = sessionFactory.openSession();
					 personMapper personmapper = session.getMapper(personMapper.class);
					 Person person = personmapper.queryPersonById(1);
					 session.close();
					 //第二次查询
					 SqlSession session2 = sessionFactory.openSession();
					 personMapper personmapper2 = session2.getMapper(personMapper.class);
					 Person person2 = personmapper2.queryPersonById(1);
					 System.out.println(person.toString()+","+person2.toString());
					 session2.close();
				}

  

 

 只查了一次。再次减少了对数据库的蹂躏。- .-

注意:二级缓存的适用范围是同一个namespace。

 

posted @ 2020-11-13 16:30  Double晨  阅读(159)  评论(0编辑  收藏  举报