您的位置:首页 > 职场人生

Mybatis 面试题

2020-01-13 07:53 176 查看
1、什么是Mybatis?

mybatis是一个的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。

2、谈谈你对MyBatis的理解

MyBatis是一框半自动化ORM映射工具,这里的半自动化是相对于Hibernate提供了全自动化ORM实现而言的半自动化。全自动化ORM实现了数据库表和实体类的映射,以及在运行时的SQL的自动生成和执行。而MyBatis却不会再运行期间为程序员自动生成SQL语句,具体的SQL语句需要程序员自己写在XML文件中,通过映射配置文件来访问数据库。将结果集返回到实体类。

3、Mybaits的优点:

(1)基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影 响,SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;提供XML标 签,支持编写动态SQL语句,并可重用。
(2)与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手 动开关连接;
(3)很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库,所以只要JDBC 支持的数据库MyBatis都支持)。
(4)能够与Spring很好的集成;
(5)提供映射标签,支持对象与数据库的ORM字段关系映射;提供对象关系映射标签, 支持对象关系组件维护。

4、MyBatis框架的缺点:

(1)SQL语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写SQL语 句的功底有一定要求。
(2)SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。

5、MyBatis框架适用场合:

(1)MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案。
(2)对性能的要求很高,或者需求变化较多的项目,如互联网项目,MyBatis将是不错的 选择。

6、MyBatis和Hibernate有什么异同

(1)相同点:屏蔽JDBC API 的底层方问细节,使我们不用于JDBC API打交道就可以访 问数 据库
(2)不同点:Hibernate是全自动的ORM映射工具,可以在运行期间自动生成SQL语 句,Mybatis需要在xml配置文件中写SQL语句;因为Hibernate是自动生成SQL 语句的,在写复杂查询时,Hibernate实现比Mybatis复杂的多,并且Hibernate很 繁重,因为他封装了很多东西,而MyBatis则运行速度很快

7.#{}和${}的区别是什么?

#{}是SQL语句预编译处理,KaTeX parse error: Expected 'EOF', got '#' at position 35: …串替换。 Mybatis在处理#̲{}时,会将sql中的#{}替…{}时,就是把${}替换成变量的值。

8、当实体类中的属性名和表中的字段名不一样 ,怎么办 ?

(1)第1种: 通过在查询的sql语句中定义字段名的别名,让字段名的别名和实体类的 属性名一致。
(2)第2种: 通过来映射字段名和实体类属性名的一一对应的关系。

9、Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式?

(1)第一种是使用标签,逐一定义数据库列名和对象属性名之间的映射关 系。
(2)第二种是使用sql列的别名功能,将列的别名书写为对象属性名。
有了列名与属性名的映射关系后,Mybatis通过反射创建对象,同时使用反射给对象 的属性逐一赋值并返回,那些找不到映射关系的属性,是无法完成赋值的。

10、Mybatis能执行一对多,一对一的联系查询吗,有哪些实现方法

(1)能,不止可以一对多,一对一还可以多对多,一对多
原理:
1、单独发送一个SQL去查询关联对象,赋给主对象,然后返回主对象
2、使用嵌套查询,似JOIN查询,一部分是A对象的属性值,另一部分是关联对 象 B的属性值,好处是只要发送一个属性值,就可以把主对象和关联对象查出来

11、MyBatis的动态Sql是做什么的,有哪些动态标签

动态Sql是为了让我们可以在Xml文件内,以标签的形式编写动态的SQL,完成逻辑判断 和动态拼接Sql的功能, MyBatis提供了9个动态标签, trim、 where、 set、 foreach、 if、 choose、 when、 otherwise、 bind 。

12、XML映射文件中,除了常见的select| insert lupdae|delete标签之外,还有哪些标签?

还有很多其他的标签, resultMap、 parameterMap、 sql、 include、 selectKey,
加上动态 sql 的9个标签, trim、 where、 set、 foreach、 if、 choose、 when、 otherwise、 bind 等,
其中 sql标签为 sql片段标签,通过include标签引入sql片段,selectKey为不支持 自增 的主键生成策略标签

  • 点赞
  • 收藏
  • 分享
  • 文章举报
小杰爱吃蛋 发布了32 篇原创文章 · 获赞 35 · 访问量 8717 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: