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

学习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。

 

标签:xml,缓存,蹂躏,personMapper,开启,查询,session,Mybatis
来源: https://www.cnblogs.com/jccjcc/p/13970054.html