MyBatis6——一级缓存、二级缓存、逆向工程
2020-02-08 16:04:04来源:博客园 阅读 ()
MyBatis6——一级缓存、二级缓存、逆向工程
查询缓存 一级缓存:同一个sqlSession对象 MyBatis默认开启一级缓存,如果用同样的sqlSession对象查询相同的数据,则会在第一次查询时向数据库发送SQL语句,并将查询的结果放入到SQLSESSION中,后续再次查询该同样的对象时,则直接从缓存中查询该对象即可(即忽略了数据库的访问)。 注意:commit()之后缓存就会被清理,一般增删改操作之后要commit()。 二级缓存: 1.Mybatis自带二级缓存:同一个namespace生成的mapper对象 MyBatis默认没有开启二级缓存,需手工打开。 (1)conf.xml <!-- 开启二级缓存 --> <setting name="cacheEnabled" value="true"/> (2)在具体的mapper.xml中声明开启 <!-- 声明此namespace开启二级缓存 --> <cache/> 结论:只要产生的xxMapper对象来自同一namespace,属于二级缓存
根据异常提示:NotSerializableException可知,MyBatis的二级缓存是将对象放入硬盘文件中。 序列化:内存--->硬盘 反序列化:硬盘--->内存 准备缓存的对象,必须实现序列化接口。其本类、父类、级联属性全部需要序列化。 注意:执行session.close()时,将一级缓存对象放入二级缓存。 禁用二级缓存:在想禁用的某个对象中<select useCache="false"> 清理二级缓存:(1)与清理一级缓存的方法相同
commit(); (一般执行增删改时会清理缓存,原因:预防脏数据的产生)
在二级缓存中,commit()不能是查询自身的commit。
(2)在select标签中添加属性flushCache="true"
2.三方提供的二级缓存:ehcache、memcache 要想整合三方提供的二级缓存(或者自定义二级缓存),必须实现cache接口。 整合ehcache二级缓存: (1)添加jar包
Ehcahe-Core-2.6.11.jar
mybatis-Ehcache-1.0.3.jar
slf4j-api-1.7.25.jar (2)编写配置文件Ehcache.xml (3)开启ehCache二级缓存 在xxxMapper.xml中开启 <!-- 开启ehcache二级缓存 --> <cache type="org.mybatis.caches.ehcache.EhcacheCache"> <!-- 覆盖Ehcache中的值 --> <property name="maxElementsInMemory" value="2000"/> </cache>逆向工程 表、类、接口、mapper.xml四者密切相关,因此,当知道其中一个的时候,其他三个应该可以自动生成。 表——>其他三个 实现步骤: 1.mybatis-generator-core.jar、mybatis.jar、mysql-connector-java.jar; 2.逆向工程的配置文件generator.xml; 3.执行。
原文链接:https://www.cnblogs.com/ghlz/p/12284596.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- redis缓存 2020-06-12
- MyBatis缓存特性详解 2020-06-03
- 架构设计 | 缓存管理模式,监控和内存回收策略 2020-05-26
- 【java框架】JPA(4) -- JPA二级缓存与JPQL 2020-05-24
- redis的缓存穿透、雪崩、击穿 2020-05-23
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash