【2024项目实训】框架篇-Mybatis

01-Mybatis的执行流程

(高频面试题)

第一步:读取Mybatis核心的配置文件

第一个配置的操作:这里指定要操作的数据库,并且输入用户名和密码;

第二个:加载映射文件

两种方式:指定映射文件;指定包名,在这个mapper下面所有的映射文件都会进行加载

第二步:Mybatis通过sql session对象来操作数据库

那么第二步就是创建sql session的对象

会话工厂——它可以批量去生产SqlSession

第三步第四步:

真正操作数据库的是Executor执行器,它维护了一级缓存和二级缓存

第五步:我需要先读取信息才去操作数据库

一个mapper的例子:

定义信息:1、它是一个select标签,也就是查询

2、id,对应mapper接口中的方法的名称

3、resultType,方法的返回值

4、还包含一个sql语句

这些信息,都是由MappedStatement对象进行读取存储的。

第六步:类型转换

先由Java支持的类型转换为数据库类型

最后再转回来

输入参数映射,输出参数映射

整个执行流程:

02-Mybatis-延迟加载使用及原理

举个例子

1、局部修改——fetchType = "lazy"

2、全局延迟加载

在Mybatis的核心配置文件中,将其注释解开。

延迟加载的实现

面试问题总结:

03-Mybatis-一级、二级缓存

一级缓存的范围只在SqlSession部分

而二级缓存的作用域在命名空间和mapper,不依赖session。

一级缓存

运行结果:

可以发现,第二次查询的时候没有执行sql语句,它是从缓存中直接拿的。

二级缓存

它们属于不同的会话,所以在一级缓存下需要查询两次SQL。

二级缓存开启方式:

注意:

总结:

这里的session.flush() 在commit之前默认都会执行它。

它完成了两件事情:1、清理缓存 2、执行sql

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值