【吊打面试官】mybatis高频面试知识点和答案

mybatis总结

1、MyBatis简介
1.1 MyBatis是什么?
1.2 ORM是什么
1.3 为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里?
1.4 传统JDBC开发存在的问题
1.5 JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的?
1.6 Mybatis优缺点
1.7 MyBatis框架适用场景
1.8 Hibernate 和 MyBatis 的区别
2、MyBatis的解析和运行原理
2.1 MyBatis编程步骤是什么样的?
2.2 请说说MyBatis的工作原理
2.3 MyBatis的功能架构是怎样的
2.4 MyBatis的框架架构设计是怎么样的
2.5 为什么需要预编译
2.6 Mybatis都有哪些Executor执行器?它们之间的区别是什么?
2.7 Mybatis中如何指定使用哪一种Executor执行器?
2.8 Mybatis是否支持延迟加载?如果支持,它的实现原理是什么?
3、映射器
3.1 #{}和${}的区别
3.2 模糊查询like语句该怎么写
3.3 在mapper中如何传递多个参数
3.4 Mybatis如何执行批量操作
3.5 如何获取生成的主键
3.6 当实体类中的属性名和表中的字段名不一样 ,怎么办
3.7 Mapper 编写有哪几种方式?
3.8 什么是MyBatis的接口绑定?有哪些实现方式?
3.9 使用MyBatis的mapper接口调用时有哪些要求?
3.10 最佳实践中,通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗
3.11 Mybatis的Xml映射文件中,不同的Xml映射文件,id是否可以重复?
3.12 简述Mybatis的Xml映射文件和Mybatis内部数据结构之间的映射关系?
3.13 Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式?
3.14 Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有哪些标签?
3.15 Mybatis映射文件中,如果A标签通过include引用了B标签的内容,请问,B标签能否定义在A标签的后面,3.16 还是说必须定义在A标签的前面?
4、高级查询
4.1 MyBatis实现一对一,一对多有几种方式,怎么操作的?
4.2 Mybatis是否可以映射Enum枚举类?
5、动态SQL
Mybatis动态sql是做什么的?都有哪些动态sql?能简述一下动态sql的执行原理不?
6、插件模块
6.1 Mybatis是如何进行分页的?分页插件的原理是什么?
6.2 简述Mybatis的插件运行原理,以及如何编写一个插件。
7、缓存
7.1 Mybatis的一级、二级缓存

答案如下:

1、请说说MyBatis的工作原理
在学习 MyBatis 程序之前,需要了解一下 MyBatis 工作原理,以便于理解程序。MyBatis 的工作原理如下图
图片说明
1)读取 MyBatis 配置文件:mybatis-config.xml 为 MyBatis 的全局配置文件,配置了 MyBatis 的运行环境等信息,例如数据库连接信息。

2)加载映射文件。映射文件即 SQL 映射文件,该文件中配置了操作数据库的 SQL 语句,需要在 MyBatis 配置文件 mybatis-config.xml 中加载。mybatis-config.xml 文件可以加载多个映射文件,每个文件对应数据库中的一张表。

3)构造会话工厂:通过 MyBatis 的环境等配置信息构建会话工厂 SqlSessionFactory。

4)创建会话对象:由会话工厂创建 SqlSession 对象,该对象中包含了执行 SQL 语句的所有方法。

5)Executor 执行器:MyBatis 底层定义了一个 Executor 接口来操作数据库,它将根据 SqlSession 传递的参数动态地生成需要执行的 SQL 语句,同时负责查询缓存的维护。

6)MappedStatement 对象:在 Executor 接口的执行方法中有一个 MappedStatement 类型的参数,该参数是对映射信息的封装,用于存储要映射的 SQL 语句的 id、参数等信息。

7)输入参数映射:输入参数类型可以是 Map、List 等集合类型,也可以是基本数据类型和 POJO 类型。输入参数映射过程类似于 JDBC 对 preparedStatement 对象设置参数的过程。

8)输出结果映射:输出结果类型可以是 Map、 List 等集合类型,也可以是基本数据类型和 POJO 类型。输出结果映射过程类似于 JDBC 对结果集的解析过程。

优质文章推荐:

1、【吊打面试官】数据库大厂高频面试题和答案
https://blog.nowcoder.net/n/75e67d5ea8444325888e5fb6509c6081
2、【吊打面试官】redis大厂高频面试题和答案
https://blog.nowcoder.net/n/e4ba3dea1fbf49a3b80955b49cf7d841
3、【吊打面试官】spring高频面试知识点和答案
https://blog.nowcoder.net/n/418eb40949b4423881ed0a6c7f81fdca
4、【吊打面试官】spring boot高频面试知识点和答案
https://blog.nowcoder.net/n/44078445e7324141b6b43bc5fc596a5f
5、【吊打面试官】linux高频面试知识点和答案
https://blog.nowcoder.net/n/ef1138359b5e49b4a3763947f2cdf879

回复【资料】获取完整答案和面试资料:

图片说明

全部评论

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务