关于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也有相关的笔记+面试... ...
说了这么多,不知道有没有说到你心坎里呢,有需要即可免费分享,希望能够助你一臂之力吧!
感兴趣的朋友点击下方小卡片免费领取!!!