MyBatis面试考点
创作时间:
作者:
@小白创作中心
MyBatis面试考点
引用
CSDN
1.
https://blog.csdn.net/weixin_43785387/article/details/139578856
MyBatis面试考点
MyBatis执行流程
- 加载MyBatis配置文件,mybatis-config.xml加载运行环境和映射文件
- 构建会话工厂SqlSessionFactory
- 会话工厂创建SqlSession对象(包含了执行SQL语句的所有方法)
- 操作数据库的接口,Executor执行器,同时负责查询缓存的维护
- Executor接口的执行方法中有一个MappedStatement类型的参数,封装了映射信息
- 输入参数映射
- 输出结果映射
MyBatis是否支持延迟加载?
Mybatis支持延迟加载,但是默认没有开启。延迟加载是指需要用到数据时才进行加载,不需要用到数据时就不加载数据。可以在MyBatis配置文件中启用加载lazyLodingEnable=true,默认是关闭的
延迟加载的原理?
- 使用CGLIB创建目标对象的代理对象
- 当调用目标方法user.getOrderList()时,进入拦截器invoke方法,发现user.getOrderList()时null值,执行sql查询order列表
- 把order查询上来,然后调用user.setOrderList(List
orderList),接着完成user.getOrderList()方法的调用
MyBatis的一级、二级缓存用过吗?
- 本地缓存:基于PerpetualCache,本质是一个HashMap
- 一级缓存:作用域时session级别,默认是开启的
- 二级缓存:作用域时namespace和mapper的作用域,不依赖于session。默认是关闭的,需要在全局配置文件开启cacheEnable=true,然后再mapper文件加上<cache/>。只有会话提交或者关闭以后,一级缓存中的数据才会转移到二级缓存中。
MyBatis二级缓存什么时候会清理缓存中的数据
当某一个作用域(一级缓存Session/二级缓存Namespace)进行了新增、修改、删除操作以后,默认该作用域下所有select中的缓存将被clear
热门推荐
房产抵押登记怎么解除抵押权
中低位直肠癌的精准诊断与规范治疗
抚平颈部纹路全攻略
混合动力汽车真的省油吗?深度解析其油耗表现与经济性
古代科举制与现代高考:历史的对比和反思
女朋友有焦虑症抑郁症我该怎么做
四川搞笑方言配音锤子:那些年与“锤子”的故事
牙齿咬合不正:原因、症状与治疗方法全解析
CPU的内部架构和工作原理
丝瓜络为什么可以洗碗?丝瓜瓤的神奇功效大揭秘
各级疾控中心的基本职能是什么?
大白菜种植方法全过程
美味又健康的烧烤,如何避免油炸成为健康隐患?
鲍鱼怎么杀和清洗
瓜尔胶:一种多功能天然多糖的全面解析
减少食盐的健康益处及方法
治疗咽喉炎的14个中成药,一文总结
止痛舒压更提神:花莲慈院中医部养生教学“十总穴之万能穴”
《朱子家训》为什么能影响后世那么多年?
加快推进县级中医医院高质量发展!家门口有了优质中医药服务
当我们看情感综艺时,我们在看什么
辟谣!世界第一王楚钦的奥运金牌是2枚!不是0.83枚!
色差△E怎么理解?色差△E的计算式是怎样的?
支气管炎忌口哪些食物?这些饮食和护理要点请收好
如何在辩护词中引用判例来支持论点
左侧锁骨下动脉瘤有什么症状
降服嘎嘎作响的声音?16 窍门让山地车更安静
压力传感器故障检测与预防措施
天庭三大反骨仔:孙悟空、哪吒、杨戬的叛逆传奇
啤酒里面放什么东西容易喝醉