关于MyBatis,你能抵挡住面试官的连环炮轰吗?

JavaSSM框架面试,你值得拥有(附答案) 一、Spring面试题 1、Spring 在ssm中起什么作用? Spring:轻量级框架 作用:Bean工厂,用来管理Bean的生命周期和框架集成。 两大核心: 1、IOC/DI(控制反转/依赖注入) :把dao依赖注入到service层,service层反转给action层,Spring顶层容器为BeanFactory。 2、AOP:面向切面编程 2、Spring的事务? 编程式事务管理:编程方式管理事务,极大灵活性,难维护。 声明式事务管理:可以将业务代码和事务管理分离,用注解 阅读详情

关于Mybatis,你能抵挡住面试官的连环炮轰吗?可能很多人都还没有准备好,不过没关系,小编这次就来探讨分析一下吧。
关于MyBatis的学习,我有一些建议和笔记想分享出来一起跟大家学习,总共是分四步走:

  • 第一步 清楚什么是MyBatis?
  • 第二步 搞明白MyBatis怎么学?
  • 第三步 分析MyBatis的面试题目(附带解析)
  • 第四步 既然谈到了MyBatis,那没理由不来说说SSM框架里的另外两个咯

注意:不管是前三步说的的MyBatis还是第四步提到的Spring及SpringMVC,其中的一些面试题和解析,以及一些学习的笔记跟书籍资料,文末有领取方式呀!


第一步 清楚什么是MyBatis?

  • Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高。
  • MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
  • 通过xml 文件或注解的方式将要执行的各种 statement 配置起来,并通过java对象和 statement中sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为java对象并返回。(从执行sql到返回result的过程)。

第二步 搞明白MyBatis怎么学?
谈到这个问题,给大家介绍一本447页的《MyBatis技术内幕》(文末有下载方式),总共是4个章节吗,不知道这本书你看过学习没有... ...

  • 第1章 是MyBatis的快速入门,其中介绍了MyBatis出现的背景、与其他JAVA持久化框架的比较以及MyBatis的入门示例。介绍了MyBatis的整体架构,并简述了MyBatis中各个模块的基本功能。

  • 第2章 介绍MyBatis基础支持层中各个模块的功能,其中包括数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块和解析器模块。这些模块相对独立,读者在实践中如果遇到这类似的需求,可以直接参考MyBatis的实现。

  • 第3章 介绍MyBatis核心处理层的主要功能,其中包括MyBatis初始化过程、动态SQL的解析过程、结果集的映射原理、SQL语句的参数绑定、KeyGenerator、StatementHandler以及Executor等组件的实现原理。同时,还介绍了MyBatis接口层的设计原理。

  • 第4章 介绍MyBatis插件的编写和配置方式、运行原理以及常见的应用场景,并分析了在实践中使用的分页插件和分表插件的具体实现。之后,介绍了MyBatis和Spring集成开发的相关内容,搭建了Spring4.3、MyBatis3.4、SpringMVC的集成开发环境,剖析了MyBatis-Spring中核心组件的实现原理。最后介绍了一些在使用MyBatis时用到的一些小技巧和一些小工具的使用方案。


第三步 分析MyBatis的面试题目(附带解析)


(1)先来看题目(答案先拦下,试试自己知道不,这边只列举了32道,只是一些)
什么是 MyBatis?讲下 MyBatis 的缓存
Mybatis 是如何进行分页的?分页插件的原理是什么?
简述 Mybatis 的插件运行原理,以及如何编写一个插件?
Mybatis 动态 sql 是做什么的?都有哪些动态 sql?能简述一下动态 sql 的执行原理不?
#{}和${}的区别是什么?
为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?
Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么?
MyBatis 与 Hibernate 有哪些不同?
MyBatis 的好处是什么?
简述 Mybatis 的 Xml 映射文件和 Mybatis 内部数据结构之间的映射关系?
什么是 MyBatis 的接口绑定,有什么好处?
接口绑定有几种实现方式,分别是怎么实现的?
什么情况下用注解绑定,什么情况下用 xml 绑定?
MyBatis 实现一对一有几种方式?具体怎么操作的?
Mybatis 能执行一对一、一对多的关联查询吗?都有哪些实现方式,以及它们之间的区别?
MyBatis 里面的动态 Sql 是怎么设定的?用什么语法?
Mybatis 是如何将 sql 执行结果封装为目标对象并返回的?都有哪些映射形式?
Xml 映射文件中,除了常见的 select|insert|updae|delete 标签之外,还有哪些标签?
当实体类中的属性名和表中的字段名不一样,如果将查询的结果封装到指定 pojo?
通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应, Dao 的工作原理,是否可以重载?
Mybatis 映射文件中,如果 A 标签通过 include 引用了 B 标签的内容,请问,B 标签能否定义在 A 标签的后面,还是说必须定义在 A 标签的前面?
Mybatis 的 Xml 映射文件中,不同的 Xml 映射文件,id 是否可以重复?
Mybatis 都有哪些 Executor 执行器?它们之间的区别是什么?
Mybatis 中如何指定使用哪一种 Executor 执行器?
Mybatis 执行批量插入,能返回数据库主键列表吗?
Mybatis 是否可以映射 Enum 枚举类?
如何获取自动生成的(主)键值?
在 mapper 中如何传递多个参数?
resultType resultMap 的区别?
使用 MyBatis 的 mapper 接口调用时有哪些要求?
Mybatis 比 IBatis 比较大的几个改进是什么?
IBatis 和 MyBatis 在核心处理类分别叫什么?在细节上的不同有哪些?
(2)再来看解析
题目+解析,篇幅有点多,我就不一一列举了,不过有整理成PDF文档如下图所示


第四步 既然谈到了MyBatis,那没理由不来说说SSM框架里的另外两个咯
4.1 第一个要说的是Spring
Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。

  • 目的:解决企业应用开发的复杂性
  • 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能
  • 范围:任何Java应用

Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架
关于Spring的一些学习笔记这边也是整理有的,我就不一一分析了,有面试有笔记也有书籍


4.2 第二个自然就是SpringMVC
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一般老项目使用)等。
好吧,SpringMVC也有相关的笔记+面试... ...


说了这么多,不知道有没有说到你心坎里呢,有需要即可免费分享,希望能够助你一臂之力吧!
感兴趣的朋友点击下方小卡片免费领取!!!

RK3568 Android14 调试 RTL8211F 千兆以太网 (RGMII) 调试 RTL8211F 的核心在于:确认地址(看电阻贴片情况)和 搞定延时(配置 rgmii-id 或微调 delay 值)。一旦这两点对上了,RK3568 的千兆网络就能稳定运行。希望这篇结合原理图的实战记录能帮到你! 阅读详情

相关推荐

lumerical-环形谐振器

利用mode求解器优化得到所需的环的总长度,即环形器的半径,然后通过varFDTD得到光场分布和透过率.

m0_61776728的博客 2189

迄今为止把 Mybatis 讲解的最详细的 PDF,图文并茂,通俗易懂

第 1 章:Mybatis 的内容简介,告诉读者 Mybatis 是什么,在何种场景下使用它。第 2 章:主要介绍 Mybatis 的基础模块及其生命周期,并给出实例.第 3 章:主要介绍 Mybatis 配置的主要含义和内容。第 4 章:介绍 Mybatis 映射器的主要元素及其使用方法。第 5 章:介绍动态 SQL,助你轻松应对大部分的 SQL 场景。

Park33的博客 587

幸狐RV1106开发板实战:5分钟搞定Yolo8模型部署(附避坑指南)

本文详细介绍了在幸狐RV1106开发板上快速部署YOLOv8模型的实战流程。通过RKNN-Toolkit2工具链,将ONNX模型转换为RV1106 NPU专用的RKNN格式,并完成交叉编译与上板运行。文章重点分享了环境搭建、模型转换的关键步骤以及常见的避坑指南,帮助开发者高效实现边缘AI目标检测应用。

weixin_28677451的博客 916

带你深入浅出MyBatis技术原理与实战(PDF实战实践)

这些场景在大量的编码中使用,具备较强的实用价值,这些内容都是通过实战得来的,供读者们参考。以及针对映射器这个MyBatis最强大的工具,也是我们使用MyBatis时用得最多的工具,一个详细的讲解,让你能熟练掌握。本文主要讲解了Mybatis的应用,解析了其原理,从而形成一个完整的知识体系,以讲解MyBatis基础运用和原理为主,所以适合初级到中高级开发人员阅读。对SQL有了详细的阐述和mybatis底层的设计和实现原理(原理本就意味着难懂,对初学者来说建议多阅读几遍反复推敲还是能够掌握的)

jjc4261的博客 269

立创开源:基于STM32F103与ADS1256的六维力传感器低成本实现方案

本文详细介绍了一种基于STM32F103微控制器与ADS1256高精度ADC的低成本六维力传感器实现方案。该方案通过3D打印的六梁弹性体结构结合应变片,将多维力信号转换为电信号,并由24位ADC进行高精度采集。文章涵盖了硬件选型、电路设计、嵌入式软件驱动及上位机数据可视化全流程,为机器人、精密测量等领域的爱好者提供了一个可复现的开源实践参考。

weixin_34718952的博客 396

【BAAS】基于supabase的知识库详细设计

为满足快速开发需要和减少开发及维护成本,使用BAAS(Backend-as-a-Service)模式可以很好的降低我们的后端维护成本,并提高前端对接效率。一般来说,BAAS是一种云服务模式,BaaS供应商会为提供一些通用的能力,例如用户身份验证、数据库管理、远程更新和推送通知(针对移动应用程序),以及云存储和自托管。BaaS最主流的是Google的firebase,具有相当完善的功能和集成方案,但他是收费的,而且在我们实际项目中,可能需要私有化部署,这时就需要一些开源的替代方案,例如主流的。

Ric的博客 1781

《MyBatis技术内幕》第一章

mybatis快速入门 JDBC查询执行步骤: 1.注册数据库驱动,指定数据库地址、名称、用户密码; 2.通过DriverManager打开数据库连接; 3.通过数据库连接创建Statement对象; 4.通过Statement对象执行SQL语句,得到ResultSet对象; 5.通过ResultSet读取数据,并将数据转化为JavaBean对象; 6.关闭ResultSet、Statement对象以及数据库连接,释放相关资源。 ORM(对象-关系)框架: ORM框架的主要功能就是根据映射配置文件,完成数据

weixin_43031419的博客 300

因果推断--PSM的原理和应用(二)

上一篇介绍了DID,本文介绍和DID可一起搭配使用的一种因果推断方法PSM。在正式介绍PSM之前,先来简单回顾一下为什么需要因果推断以及如何做因果推断。我们都知道相关非因果,比起相关我们更希望知道两个事件之间的因果关系,有了确切的因果关系,才能知道对A如何操作才能引起B的变化。解决因果推断问题,目前主要有两种框架,Rubin虚拟事实模型和Pearl因果图模型。站在数据分析的角度上,Rubin虚拟事实模型更容易理解,其核心思想是寻找恰当的对照组。

baidu_26137595的博客 1万+

面试的朋友听我说,18个MyBatis高频知识及学习笔记,双手奉上

1 精讲#{}和${}的区别是什么?2 数据库链接中断如何处理?数据库的访问底层是通过tcp实现的,当链接中断是程序是无法得知,导致程序一直会停顿一段时间在这,最终会导致用户体验不好,因此面对数据库连接中断的异常,该怎么设置mybatis呢?connection操作底层是一个循环处理操作,因此可以进行时间有关的参数:3 在开发过程中,经常遇到插入重复的现象,这种情况该如何解决呢?解决插入重复的思路 :总结:多线程同时插入数据,谁获取锁并插入数据成功了其他线程不做任何操作。当插入数据失败后,其他线程抢锁进行插

m0_72136664的博客 439

科研级YOLOv8 Neck革新:BiFPN双向特征金字塔赋能,让多尺度融合更高效的实战指南

在文件夹下新建BiFPN.py,将上述BiFPNLayer和BiFPN类的代码写入其中。这一步是为了让YOLOv8的代码架构能识别我们的自定义Neck模块。

m0_64661770的博客 153

YOLOv11改进 | Conv篇 | 图像去雾卷积DEConv助力yolov11有效涨点(部署零额外开销)

本文介绍了一种最新改进机制用于低层视觉任务的细节增强卷积(DEConv)机制。DEConv在训练阶段采用"普通卷积+差分卷积"的多分支并联结构,增强网络对边缘、纹理等细节特征的学习能力;在推理阶段可折叠为标准3×3卷积,保持与普通卷积相同的计算效率。文中详细阐述了DEConv的工作原理、实现方法以及在YOLOv11中的应用步骤,包括核心代码解析、模型修改方法和训练配置。实验表明,该机制在去雾、去噪、超分等强调细节重建的任务中具有显著优势。文章还提供了完整的代码实现和训练指导.

Snu77的博客 2441

【MyBatis技术内幕】MyBatis快速入门

由于用户自定义插件会影响MyBatis的核心行为,在使用自定义插件之前,开发人员需要了解MyBatis内部的原理,这样才能编写出安全、高效的插件。拼凑SQL语句是一件繁琐且易出错的过程,为了将开发人员从这项枯燥无趣的工作中解脱出来,MyBatis实现动态SQL语句的功能,提供了多种动态SQL语句对应的节点,例如,节点、节点等。MyBatis中的scripting模块会根据用户传入的实参,解析映射文件中定义的动态SQL节点,并形成数据库可执行的SQL语句。

qq_38149054的博客 687

YOLOv5算法改进(21)— 添加CA注意力机制 + 更换Neck网络之BiFPN + 更换损失函数之EIoU

本节课作者就结合论文对YOLOv5进行组合改进(添加CA注意力机制+更改Neck网络之BiFPN+更换损失函数之EIoU),小白必学!

小哥谈 2821

mybatis技术内幕+源码

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34327223的博客 1482

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

MyBatis 技术内幕 - MyBatis 介绍

MyBatis 技术内幕 - MyBatis 介绍 读书笔记 书籍名称:《MyBatis 技术内幕》 编著姓名:徐郡明 出版厂商:电子工业出版社 MyBatis 官方文档:http://www.mybatis.org/mybatis-3/zh/index.html 源码下载:https://github.com/mybatis/mybatis-3/releases 背景简介: 前身:i...

走在命运的左岸 1024

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

MyBatis技术内幕

《MyBatis技术内幕》以MyBatis 3.4为基础,针对MyBatis的架构设计和实现细节进行了详细分析,其中穿插介绍了MyBatis源码中涉及的基础知识、设计模式以及笔者自己在实践中的思考。《MyBatis技术内幕》共4章,从MyBatis快速入门开始,逐步分析了MyBatis的整体架构以及核心概念,对MyBatis的基础支持层、核心处理层中各个模块的功能和实现细节进行了深入的剖析。除此之...

cxzhq2002的杂记 3022

《mybatis 技术内幕之 2.4 日志模块》:org.apache.ibatis.log.LogFactory

LogFactory 源码解析

xl3379307903的博客 3265

MyBatis技术内幕读书笔记

最近花了两三天把我以前看过的《MyBatis技术内幕》又看了一遍,感觉这次受益匪浅,整本书从基础到上层讲解,对于各种xml等基础知识点也扩展了一堆,又在必要时设计模式神插入,就认真的做了一下笔记。 不过最近才开始做源码笔记,不太清楚怎么写 输入参数类型 可以是Map、List 等集合类型,也可以是基本数据类型和 POJO 类型 Mybatis的一级、二级缓存 一级缓存与session绑定 二级缓存与Namespace绑定 所有缓存在对应域进行增删改后 都会被清空 openSession 创建执行器(三种:

weixin_44598449的博客 656

mybatis技术内幕1-ORM

JDBC回顾 在java开发中可以使用jdbc完成数据库操作,使用jdbc的步骤如下: 注册数据库驱动 通过DriverManager获取数据库连接 通过数据库里连接创建Statement对象(PrepareStatment) 通过statement对象执行sql语句,得到resultSet对象 通过ResultSet读取数据,并将数据转换我javaBean对象 关闭ResultSet、Stat...

咖啡杯里的茶 382

Mybatis技术内幕(1):Mybatis简介

1.1 ORM简介 JDBC是Java与数据库交互的统一API.传统的JDBC编程的操作步骤如下: (1)、注册数据库驱动,明确指定数据库URL地址、数据库用户名、密码等连接信息 (2)、通过DriverManager打开数据库连接 (3)、通过数据库连接创建Statement对象 (4)、通过Statement对象执行SQL语句,得到ResultSet对象 (5)、通过ResultSet读取数...

weixin_33755554的博客 457

最近重新看了一遍《Mybatis技术内幕》这本书,说一下我的心得

前几天写了一篇推荐Spring学习书籍的文章,大伙反响还挺热烈,这不禁令我喜出望外,毕竟又找到了新的水文方式????。 今天抽时间看了看大伙的消息,发现又有个小老弟要我推荐Mybatis的学习书籍,好家伙,我感觉我又找到水文的借口了,马上安排。 其实关于MyBatis的话,官方文档已经做得足够好了,基本的使用查看官网就够了。而MyBatis源码解析的书不多,写得比较好的也就只有《Mybatis技术内幕》了 如果需要电子档,可以点击《Mybatis技术内幕》领取 好了,话不多说,一起来看看这本书 《Myb

linuxguitu的博客 1087

【华为OD机试 2023】基站维护工程师(C++ Java JavaScript Python)

某地方有 n 个基站(1 < n < 10),已知各基站之间的距离 s(0 < s < 500),并且基站 x 到基站 y 的距离,与基站 y 到基站 x 的距离并不一定会相同。小王从基站 1 出发,途经每个基站 1 次,然后返回基站 1 ,需要请你为他选择一条距离最短的路。小王是一名基站维护工程师,负责某区域的基站维护。站点数n和各站点之间的距离(均为整数)

m0_57042151的博客 387

《MyBatis 技术内幕》阅读梳理合集

第一章 MyBatis快速入门 第二章 基础支持层

qq_30033509的博客 328

Mybatis技术内幕——第1章:整体架构与模块

1.1 整体架构模块图 1.2 接口层(org.apache.ibatis.session) 1.3 核心处理层:四大核心组件(org.apache.ibatis.executor) Executor StatementHandler ParameterHandler ResultSetHandler 1.4 基础支持层 解析器模块(org.apache.ibatis.parsing) 反射模块(org.apache.ibatis.reflection) 类型转换模块(org.apach.

qq_41157876的博客 409

《MyBatis技术内幕》读书笔记

前言 看这本书的初衷,只是想大概了解一下MyBatis的工作方式,大概了解一下原理。这本书是从源码出发进行讲解的,对每个模块都进行了细致的介绍。 在现阶段,个人对源码分析不是那么感兴趣,因为通常源码分析都是从已经很熟悉源码的人的角度出发,像cpu似的疯狂进入xx函数,这个函数又进入了xx函数,强调了很多细节问题,感觉在做十字绣,但是却没法对框架的构造有整体的把握 当然,从分析源码的角度看,这本书还是挺好的,各个模块也是平行的,铺开来用不同的章节讲,脉络也比较清晰——只不过,我想把仅有的时间用来了解更有趣的知

qq_33309098的博客 289
上一篇: 20道JVM面试重点问题及十大模块知识点笔记
下一篇: 面试指南之“性能调优”:MySQL+Tomcat+JVM,还怕面试官的轰炸?
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值