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

一、一级缓存

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

062d80b78d49314a0b68915158aea60d.png

ed28a383c34fd0fae4c738d65a2a414e.png

commit可以清除缓存。

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

在conf.xml文件中的开启日志setting标签下,添加标签

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

即可。

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

d7d9716a827db61e61d32c46455182f7.png

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

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();

}

e1404497eb93b72c97b64985e275f7db.png

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值