mybatis基础知识记录2

课程复习

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

一对一查询

在这里插入图片描述

上面的id对应的应该是property

resultType:使用resultType实现较为简单,如果pojo中没有包括查询出来的列名,需要增加列名对应的属性,即可完成映射

如果没有查询结果的特殊要求建议使用resultType

resultMap:需要单独定义resultMap,实现有点麻烦,如果对查询结果有特殊要求,使用resultMap可以完成将关联查询映射pojo的属性中

resultMap可以实现延迟加载,resultType无法实现延迟加载

一对多查询

在这里插入图片描述

ResultMap总结

在这里插入图片描述

在这里插入图片描述

延迟加载

什么是延迟加载

先从单表查询、需要时再从关联表去关联查询,大大提高数据库性能,因为查询单表要比关联查询多张表速度快

打开延迟加载开关

在这里插入图片描述

延迟加载的mapper.xml

在这里插入图片描述

测试

在这里插入图片描述

查询缓存

什么是查询缓存

提供查询缓存,用于减轻数据压力,提高数据库性能。提供一级缓存和二级缓存。

在这里插入图片描述

一级缓存是sqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构(HashMap)用于存缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响的。

二级缓存是mapper级别的缓存,多个sqlSession去操作同一个Mapper的sql语句,多个sqlSession可以共用二级缓存,二级缓存是跨sqlSession的。

一级缓存

在这里插入图片描述

在这里插入图片描述

mybatis默认支持一级缓存

二级缓存

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

调用pojo类实现序列化接口

在这里插入图片描述

为了将缓存数据取出执行反序列化操作,因为二级缓存数据

useCache配置

在这里插入图片描述

刷新缓存(就是清空缓存)

在这里插入图片描述

mybatis整合ehcache

分布缓存

我们系统为了提高系统并发性能,一般对系统进行分布式部署(集群部署方式)

在这里插入图片描述

不使用分布缓存,缓存的数据在各服务单独存储,不发便系统开发。所以要使用分布式缓存对缓存数据进行集中管理。

mybatis无法实现分布式,需要和其他分布式缓存框架进行整合。

整合方法

mybatis提供了一个cache接口,如果要实现自己的缓存逻辑,实现cache接口开发即可。mybatis和ehcache整合,mybatis和ehcache整合包中提供了一个cache接口的实现类。

在这里插入图片描述

在这里插入图片描述

加入ehcache包

在这里插入图片描述

整合ehcache:type改为对应实现类的路径

在这里插入图片描述

加入ehcache的配置文件

在这里插入图片描述

二级缓存的应用场景

在这里插入图片描述

spring和mybatis整合

整合思路

需要spring通过单例方式管理SqlSessionFactory。

spring和mybatis整合生成代理对象,使用sqlSessionFactory创建SqlSession。(spring和mybatis整合自动完成)。

持久层的mapper都需要由spring进行管理

工程结构

在这里插入图片描述

发布了151 篇原创文章 · 获赞 110 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/qq_35564813/article/details/104425793