查看: 150|回复: 0

MyBatis6——一级缓存、二级缓存、逆向工程

[复制链接]
发表于 2020-2-18 10:28:27 | 显示全部楼层 |阅读模式
查询缓存一级缓存:同一个SQLSession对象MyBatis默认开启一级缓存,如果用同样的sqlSession对象查询类似的数据,则会在第一次查询时向数据库发送SQL语句,并将查询的效果放入到SQLSESSION中,后续再次查询该同样的对象时,则直接从缓存中查询该对象即可(即忽略了数据库的访问)。
注意:commit()之后缓存就会被清理,一般增删改操作之后要commit()。 二级缓存:1.Mybatis自带二级缓存:同一个namespace生成的mapper对象MyBatis默认没有开启二级缓存,需手工打开。(1)conf.xml            (2)在具体的mapper.xml中声明开启    结论:只要产生的xxMapper对象来自同一namespace,属于二级缓存



根据异常提示:NotSerializableException可知,MyBatis的二级缓存是将对象放入硬盘文件中。序列化:内存--->硬盘反序列化:硬盘--->内存准备缓存的对象,必须实现序列化接口。其本类、父类、级联属性全部必要序列化。注意:实行session.close()时,将一级缓存对象放入二级缓存。 禁用二级缓存:在想禁用的某个对象中清理二级缓存:(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中开启                              
逆向工程表、类、接口、mapper.xml四者密切相关,因此,当知道其中一个的时间,其他三个应该可以自动生成。表——>其他三个实现步骤:1.mybatis-generator-core.jar、mybatis.jar、mysql-connector-java.jar;2.逆向工程的设置文件generator.xml;3.实行。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?用户注册

x

相关技术服务需求,请联系管理员和客服QQ:2753533861或QQ:619920289
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

帖子推荐:
客服咨询

QQ:2753533861

服务时间 9:00-22:00

快速回复 返回顶部 返回列表