滦平住房和城乡建设厅网站,wordpress角色修改,安阳网红打卡地,学电商美工一个月多少钱对于初学者#xff0c;如何进行mybatis的学习呢#xff1f;我总结了几点#xff0c;会慢慢的更新出来。首先大家需要了解mybatis是什么、用mybatis来做什么、为什么要用mybatis、有什么优缺点#xff1b;当知道了为什么的时候就开始了解如何用的问题#xff0c;如何使用my…对于初学者如何进行mybatis的学习呢我总结了几点会慢慢的更新出来。首先大家需要了解mybatis是什么、用mybatis来做什么、为什么要用mybatis、有什么优缺点当知道了为什么的时候就开始了解如何用的问题如何使用mybatis、有几种使用方式、各种方式的优缺点在这个阶段也会学习mybatis涉及到的一些标签的用法当知道了基础用法之后就开始接触一些高级的用法例如动态sql的使用、mybatis的缓存使用等至此在实战项目中使用mybatis进行开发已经没有问题了。
接下来就开始深入的研究一下mybatis这个持久层的框架在纯技术的方面进行研究提高自己的能力。首先大家需要了解一下mybatis的整体技术架构和工作原理接下来就开始了解一下mybatis各大核心组件的具体功能及其工作原理。至此算是对mybatis的原理简单的了解一下了由于博主的能力有限因此对于mybatis的框架技术研究也就到这里算结束了。
最后会了解一些其他的东西例如mybatis的逆向工程使用、如何开发一个mybatis插件在这里会介绍一下mybatis的分页实现等。
至此mybatis也算是入门了出去就可以和别人说你稍微了解mybatis框架对其也多少有一点自己的理解和看法了。
目录
1、mybatis 的缓存机制
2、一级缓存
2、1 工作机制
2、2 失效场景
3、二级缓存
3、1 工作机制
3、2 使用方式
4、与缓存设置有关的设置和属性
5、引入第三方缓存服务 这一篇介绍一下当使用mybatis作为持久层框架时如何使用缓存。根据不同的需求可以使用一级缓存、二级缓存、集成第三方缓存服务。接下来详细介绍一下
1、mybatis 的缓存机制 在mybaits中默认情况下只有一级缓存也就是SqlSession级别的缓存是开启的也称本地缓存二级缓存需要手动开启和配置才可使用二级缓存是基于namespacce级别的缓存mybatis定义了缓存接口cache用户可以通过实现Cache接口定义二级缓存。
2、一级缓存
2、1 工作机制
一级缓存是 SqlSession 级别的缓存又称本地缓存作用范围是一次会话与数据库同一次会话期间查询到的数据会放在本地缓存中以后需要获取相同的数据直接在缓存中获取。 同一次会话中如果调用两次相同的访问持久层的代码那么第二次调用的代码会去缓存中获取数据而不是去数据库查询。
2、2 失效场景
以下情况下一级缓存会失效
1sqlSession不同一级缓存失效 2查询语句不同 3两次查询之间进行了增删改操作 4主动清空一级缓存执行了 sqlSession.clearCache()
3、二级缓存
3、1 工作机制
二级缓存是全局的、基于namespace级别的缓存一个namespace对应一个二级缓存这里的namespace就是sql映射文件中的namespace。
二级缓存使用时mybatis会先将数据放在会话的一级缓存中当会话关闭、提交时一级缓存的数据会被保存到二级缓存中如果会话不提交、不关闭那么数据不会写入到二级缓存中。
3、2 使用方式
1开启全局缓存配置 setting namecacheEnabled valuetrue/setting 2在sql映射文件mapper.xml中配置使用二级缓存 cache eviction flushTinterval readOnly size type/cache
具体属性解释
eviction 缓存的回收策略 LRU:最近最少使用移除最长时间内不被使用的对象 FIFO先进先出按对象进入缓存的顺序来移除它们 SOFT软引用移除基于垃圾回收器状态和软引用规则的对象 WEAK弱引用更积极的移除基于垃圾收集器状态和弱引用规则的对象 默认的时LRU flushInterval缓存刷新间隔缓存多长时间清空一次默认不清空设置一个毫秒值 readOnly是否只读 true只读mybatis认为所有从缓存中获取数据的操作都是只读操作不会修 改数据会直接将数据在缓存中的引用给调用者不安全速度快 false非只读mybatis会利用序列化和反序列化的技术克隆一份新的数据给调 用者安全速度慢 size缓存存放数据大小type 指定自定义缓存的全类名类实现Cache接口org.mybatis.caches.ehcache.EhcacheCache 涉及到数据的bean需要实现序列化接口因为缓存查询依赖于 序列化反序列化
4、与缓存设置有关的设置和属性
cacheEnabled true是开启false是关闭 关闭的是二级缓存一级缓存一直开启 useCache每个select标签都有一个useCachetrue || “false” select idgetUsers useCachetrue 这里的useCache关闭或者开启的是二级缓存和一级缓存无关flushCache每个增删改标签都有flushCachetrue || false 当增删改执行之后开启或者关闭是否清空缓存 flushCachetrue时一级缓存和二级缓存都会清空 select标签也可以设置flushCache默认值时false不清空缓存sqlSession.clearCache只是清除当前会话的一级缓存localCacheScope 本地缓存作用域一级缓存时值为session当前会话的所有数据保存在会话缓存中 当取值为statement时就没有数据缓存了设置这个参数可以禁用掉一级缓存一般不配置
5、引入第三方缓存服务
可以整合的第三方缓存服务又 redis、ehchache等引入的缓存服务中接口需要实现Cache接口。整合的步骤1导入第三方缓存包2导入和第三方缓存整合的适配包3mapper.xml中引用自定义缓存 cache type第三方实现Cache接口的类/cache。有的时候缓存设置一次之后其他mapper中也想使用缓存则可以引用同一缓存需要在其他mapper.xml中引用 cache-ref namespacecom.czp.dao.UserMapper.xml/ 以上就是对mybatis 中缓存的一些介绍。