【关键词】一对一、多对多、做一二级缓存

1、减一等式:有四张表(from)就有三个等式(where)

2、resultMap里,第一条是id就写id标签(双标签),其他的就写result标签(单标签)来承载其他查询参数

3、多对多实现:其实就是多表查询,那么需要怎么做呢,举个例子,需要查询用户信息和其相关的信息,那就要写一个select语句,以user模型作为一个resultMap来层层递进,第一层就是需要查询user相关字段的result标签,第二层就是user表所对应的order表信息,一般还有第三层的话,那么第二层必定就是collection标签来承载,第三层就是orderDetails的信息,第四层,也就是最后一层,承载订单详情的商品信息,一个裸露的关联模型,items表,用association标签关联即可。注意点,里层所写的表标签逻辑,那么需要在对应的model对象里去加上这些关联的pojo或相关字段,再添加相应的get/set方法即可,大功告成。

4、懒加载(延迟加载、按需加载):先加载主信息,在需要的时候,再去加载从信息。在mybatis中,resultMap标签的association和collection标签具有懒加载的功能。

5、再次复盘下select标签和resultMap的关系,有前者未必有后者,可用resultType代替,有后者必定有前者。

6、懒加载 加载订单和用户信息:在sqlMapConfig.xml文件配置允许懒加载,ladyLoadingEnabled,实质:当加载三条订单信息的时候,需要查的用户信息会足步在每条订单信息后再次sql查询,而不是起初查订单信息时候同步查询用户信息,实现了用户信息的懒加载,association的select属性
7、mybatis缓存:一级缓存是session级别的,二级缓存是sessionFactory级别的
8、mybatis默认是perpetualCache永久缓存,开启二级缓存要在对应的mapper.xml的mapper标签内开头加入cache双标签
9、配置缓存:
1>.type不写,默认使用的是mybaits自带的缓存技术,perpetualCache
2>.可以改成ehcache缓存
10、session关闭了才会写入二级缓存;删除操作,提交后会清空二级缓存。
11、写入二级缓存的前提,对应的model需要序列化 ---> implements Serializable
12、只要是执行了插入、删除、更新操作,都会清空一级、二级缓存。
13、mybatis本身是一个持久层框架,她不是专门的缓存框架,所以她对缓存的实现不够好,不能支持分布式。Ehcache是一个分布式的缓存框架。
14、分布式缓存框架:redis、memcached、ehcache。
15、整合ehcache步骤:1、添加jar包;2、设置映射文件中cache标签;3、在src下添加ehcache的配置文件

 

posted @   expworld  阅读(137)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示