码迷,mamicode.com
首页 > 其他好文 > 详细

Mybatis缓存

时间:2020-02-07 01:37:45      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:setting   sina   数据库   student   二级缓存   执行   Opens   二次   als   

Mybatis一级、二级缓存

一级缓存:

同一个SqlSession对象

技术图片


SqlSession sqlSession = SqlSessionFactoryUtils.openSqlSession();

RoleMapper roleMapper = sqlession.getMapper(RoleMapper.class);

Role role = roleMapper.getRole(1);
Role role2 = roleMapper.getRole(1);

第二次访问时,不再查询数据库,直接从sqlSession中取值。

如果执行

sqlSession.commmit()

则清理,一级缓存

二级缓存:

技术图片

Mybatis自带二级缓存,同一个namespace生成的mapper对象,
namespace的值就是接口的全类名,通过接口可以产生代理对象(studentMapper对象)

StudentMapper studentMapper  = session.getMapper(StudentMapper.class);

如果是同一个接口,则是二级缓存

SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build();

SqlSession sqlSession = new SqlSessionFactory.openSession();

StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);

SqlSession sqlSession2 = new SqlSessionFactory.openSession();

StudentMapper studentMapper2 = sqlSession.getMapper(StudentMapper.class);

开启二级缓存

<setting name="cacheEnabled" value="true"/>

声明

<cache/>

序列化:从内存-〉硬盘

反序列化:从硬盘-〉内存

触发将对象执行二级缓存的时机:

学生序列化,学生中的级联属性和父session.close()
进行缓存的时刻

禁用:

useCache="false"

清理:

commit()

Mybatis缓存

标签:setting   sina   数据库   student   二级缓存   执行   Opens   二次   als   

原文地址:https://www.cnblogs.com/zhichun/p/12271575.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!