Mybatis源码知识分析

本文深入探讨了Mybatis框架的多个核心概念,包括Mapper的加载方式、Executor执行器的种类及其工作原理,以及一级和二级缓存的机制。此外,还详细解释了ORM框架的作用、#{}与${}的区别,以及Mybatis的一级缓存是否开启的问题。文中指出,虽然延迟加载在某些场景下不被看好,但理解其工作原理对于优化Mybatis的使用至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
一:mappers标签加载mapper有几种方式:四种,package优先级最大,可以看源码

二:mabatis执行器有几种:3种:默认是ExecutorType 枚举值 BatchExecutor\SimpleExecutor\ReuseExecutor(复用) 具体去看下

Executor接口的装饰器类CachingExecutor

三:Mybatis一级缓存是开始还是关闭?cacheEnabled参数为true, 怎么用的?

localCache

四:为什么select 参数是wen’hao

五:什么是ORM框架:用于实现面向对象编程里不同类型系统的数据之间的转换(String 和Varchar类型)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IXi7ayhZ-1588906445744)(https://img.hacpai.com/file/2020/03/image-46209a03.png)]

六:一级缓存和二级缓存

七:CachingExecutor为什么是装饰者模式,什么是开闭原则

八:使用JDBC查询是怎样的,Mybatis流程原理是什么

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dovS3PJg-1588906445746)(https://img.hacpai.com/file/2020/04/image-734ec201.png)]

九:重载重写概念:,各Mapper里的方法支持重载吗 不支持

image.png

image.png

org.apache.ibatis.builder.annotation.MapperAnnotationBuilder.parseStatement
final String mappedStatementId = type.getName() + “.” + method.getName();

九:${} #{}区别

#{} 会先进行预编译处理 PreparedStatement中的set方法,把具体#{}以及里面的东西变成?占位符,再传入具体的值,并给值加上双引号。

${} 直接赋值,容易SQL注入

十:延迟加载是什么?有什么用 ? 妈的在我看来一点用没有啊,操

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值