当前位置: 首页 > 图灵资讯 > 技术篇> 10道面试常考的Mybatis面试题及答案

10道面试常考的Mybatis面试题及答案

来源:图灵教育
时间:2023-04-11 10:03:16

学习java知识的重要组成部分是框架知识,其中使用频率高的是Mybatis框架。MyBatis 是支持定制的优秀持久框架 SQL、存储过程和高级映射。MyBatis 几乎所有的东西都被避免了 JDBC 代码、手动设置参数和获取结果集。今天整理了经常参加10次面试Mybatis面试题及答案,下面还附有答案。让我们往下看。

1、Mybatis是什么?

答:(1Mybatis是一个半ORM(对象关系映射)框架,内部包装JDBC。开发的时候只需要关注SQL语句本身,不需要花精力处理加载驱动、创建连接、创建statement等复杂过程。

2MyBatis 可以使用 XML 或注释原始信息的配置和映射 POJO映射成数据库中的记录,避免了几乎所有的记录 JDBC 代码和手动设置参数以及获取结果集

3通过xml 将执行各种文件或注释的方式 statement 通过java对象进行配置 statement在statement中Mysql映射生成最终执行的动态参数最后,mybatis框架执行sql,将结果映射为java对象并返回sql语句。

2、Mybaits的优势有什么?

答:1)基于SQL语句编程,非常灵活,不会影响应用程序或数据库的现有设计。SQL写在XML中,消除SQL与程序代码的耦合,便于统一管理;提供XML标签,支持动态SQL语句的编写,并可重用

2与JDBC相比,JDBC的代码量减少了50%以上,消除了大量的JDBC冗余代码,无需手动开关连接;

3很好地与各种数据库兼容

4能够与Spring集成良好;

5提供映射标签,支持对象和数据库ORM字段关系映射;提供对象关系映射标签,支持对象关系组件的维护。

3、MyBatis框架的缺点有什么?

答:(1SQL语句的编写工作量很大,尤其是字段多、关联表多的时候,对开发人员的SQL语句编写能力有一定的要求

2)SQL语句依赖于数据库,导致数据库移植性差,数据库无法随意更换。

4、MyBatis框架适用场合:

1)MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案

2)对性能要求高或需求变化较大的项目,如互联网项目,MyBatis将是不错的选择。

5、MyBatis和Hibernate有什么区别?

答:(1)Mybatis不同于hibernate,它不完全是一个ORM框架,因为Mybatis需要程序员自己编写Sql语句;

2)Mybatis直接编写原生态sql,可严格控制sql执行性能,灵活性高,非常适合对关系数据模型要求较低的软件开发,因为这类软件需求变化频繁,但需求变化需要快速输出结果。然而,灵活的前提是mybatis不能实现数据库的无关性。如果需要支持多个数据库的软件,则需要定制多套sql映射文件,工作量大;

3)Hibernate对象/关系映射能力强,数据库无关性好。如果用Hibernate开发关系模型要求高的软件,可以节省大量代码,提高效率。

6.#{}和${}有什么区别?

答:处理#{}时,Mybatis会将sql中的#{}替换为号码,并调用Prepared Statement的set方法赋值;Mybatis在处理${}时,将${}替换为变量值;使用#{}可有效防止SQL注入,提高系统安全性。

7.Mybatis是如何分页的?分页插件的原理是什么?

答:使用Rowwwybatis的Mybatis Bounds对象分页,针对Resultt Set结果集执行的内存分页,而不是物理分页。物理分页功能可以直接用物理分页的参数书写,也可以用分页插件完成。

分页原理:分页插件的基本原理是使用Mybatis提供的插件接口,实现自定义插件,拦截待执行的sql,然后重写sql,根据dialect方言添加相应的物理分页语句和物理分页参数。

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

答:一是使用标签逐一定义数据库列名与对象属性名之间的映射关系。

第二种是使用sql列的别名功能将列的别名书写为对象属性名。在列名与属性名的映射关系之后,Mybatis通过反射创建对象,并使用反射给对象的属性逐一赋值并返回。找不到映射关系的属性无法完成赋值。

9、Mybatis的编程步骤是什么?

答:首先创建Sql Session Factory;二是通过Sql Session Factory创建Sqllly Session;三是通过sqlsession执行数据库操作;二是调用session;.commit()最后提交事务;调用sessionn.close()关闭会话。

10、JDBC编程有哪些缺点,MyBatis是如何解决这些问题的?

答:(1)数据库链接的频繁创建和释放会导致系统资源的浪费,从而影响系统性能。使用数据库链接池可以解决这个问题。解决方案:在SqlMapconfig。.采用连接池管理数据库链接,在xml中配置数据链接池。

2)Sql语句写在代码中,使代码难以维护,实际应用Sql更改的可能性更大,Sql更改需要更改java代码。解决方案:在XXXmapper中配置Sql语句.与java代码分离在xml文件中。

3)将参数传输到sql语句比较麻烦,因为sql语句的where条件不一定,可能多也可能少,占位符需要与参数一一对应。解决方案: Mybatis 自动将 java 对象映射至 sql 语句。

4)分析结果集的麻烦,sql 如果数据库记录可以包装成分析代码的变化,则需要在分析前进行遍历 分析pojo对象比较方便。解决方案:Mybatis 自动将 sql 将执行结果映射到java对象。

以上内容是今天与大家分享的Mybatis面试题,学习Mybatis 程序员检查并填补答案中的空白,为面试做好准备。欢迎想了解更多知识的朋友来看看Mybatis核心源码分析培训课程,因为作为一个合格和优秀的课程java程序员,不仅要掌握面试问题,还要掌握面试问题Mybatis框架背后的运行机制和底层实现。本培训课程是java开发人员内部技能培训和技术技能提高的必修课。我希望通过上述Mybatis面试问题和推荐课程,我们能为您的知识基础和坚实的基础奠定坚实的基础。