动力节点旗下在线教育品牌  |  咨询热线:400-8080-105 学Java全栈,上蛙课网
首页 > 文章

2020最新常考Java mybatis面试题及答案

06-05 16:59 360浏览
举报 T字号
  • 大字
  • 中字
  • 小字

MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。

今天为大家整理了15道2020最新常考Java mybatis面试题,答案也一并放在一起啦,赶紧往下看看吧。

1、什么是Mybatis?

答:(1Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高。

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

3)通过xml 文件或注解的方式将要执行的各种 statement 配置起来,并通过java对象和 statement中sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为java对象并返回。(从执行sql到返回result的过程)。

2.Mybaits的优点:

答:(1)基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用;

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

3)很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库,所以只要JDBC支持的数据库MyBatis都支持);

4)能够与Spring很好的集成;

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

3.MyBatis框架的缺点:

答:(1)SQL语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写SQL语句的功底有一定要求。

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

4.简述Mybatis的插件运行原理,以及如何编写一个插件。

答:Mybatis仅可以编写针对Parameter Handler、Result SetHandler、Statement Handler、Executor这4种接口的插件,Mybatis使用JDK的动态代理,为需要拦截的接口生成代理对象以实现接口方法拦截功能,每当执行这4种接口对象的方法时,就会进入拦截方法,具体就是Invocation Handler的invoke()方法,当然,只会拦截那些你指定需要拦截的方法。

实现Mybatis的Interceptor接口并复写intercept()方法,然后在给插件编写注解,指定要拦截哪一个接口的哪些方法即可,记住,别忘了在配置文件中配置你编写的插件。

5.Mybatis的Xml映射文件中,不同的Xml映射文件,id是否可以重复?

答:不同的xml映射文件,如果配置了name space,那么id可以重复;如果没有配置name space,那么id不能重复;毕竟name space不是必须的,只是最佳实践而已。

6.讲下MyBatis的缓存

答:MyBatis的缓存分为一级缓存和二级缓存,一级缓存放在session里面,默认就有,二级缓存放在它的命名空间里,默认是不打开的,使用二级缓存属性类需要实现Serializable序列化接口(可用来保存对象的状态),可在它的映射文件中配置。

7.什么是MyBatis的接口绑定,有什么好处?

答:接口映射就是在MyBatis中任意定义接口,然后把接口里面的方法和SQL语句绑定,我们直接调用接口方法就可以,这样比起原来了SqlSession提供的方法我们可以有更加灵活的选择和设置。

8.接口绑定有几种实现方式,分别是怎么实现的?

答:接口绑定有两种实现方式,一种是通过注解绑定,就是在接口的方法上面加上@Select@Update等注解里面包含Sql语句来绑定,另外一种就是通过xml里面写SQL来绑定,在这种情况下,要指定xml映射文件里面的namespace必须为接口的全路径名。

9.什么情况下用注解绑定,什么情况下用xml绑定?

答:当Sql语句比较简单时候,用注解绑定;当SQL语句比较复杂时候,用xml绑定,一般用xml绑定的比较多。

10.MyBatis里面的动态Sql是怎么设定的?用什么语法?

答:MyBatis里面的动态Sql一般是通过if节点来实现,通过OGNL语法来实现,但是如果要写的完整,必须配合where,trim节点,where节点是判断包含节点有内容就插入where,否则不插入,trim节点是用来判断如果动态语句是以and 或or开始,那么会自动把这个and或者or取掉。

11.MyBatis实现一对一有几种方式?具体怎么操作的?

答:有联合查询和嵌套查询,联合查询是几个表联合查询,只查询一次,通过在resultMap里面配置association节点配置一对一的类就可以完成;嵌套查询是先查一个表,根据这个表里面的结果的外键id,去再另外一个表里面查询数据,也是通过association配置,但另外一个表的查询通过select属性配置。

12.模糊查询like语句该怎么写?

答:一在java中拼接通配符,通过#{}赋值;二在Sql语句中拼接通配符 (不安全会引起Sql注入)。

13.通常一个Xml映射文件,都会写一个Dao接口与之对应, Dao的工作原理,是否可以重载?

答:不能重载,因为通过Dao寻找Xml对应的sql的时候全限名+方法名的保存和寻找策略。接口工作原理为jdk动态代理原理,运行时会为生成proxy,代理对象会拦截接口方法,去执行对应的sql返回数据。

14.Mybatis中如何执行批处理?

答:使用BatchExecutor完成批处理。

15.Mybatis执行批量插入,能返回数据库主键列表吗?

答:能,JDBC都能,Mybatis当然也能。

上面的15道题就是小编为大家整理的Java mybatis面试题了,虽然内容不多,但是却是所有mybatis面试题中的精华,这是2020年最新也是最常考的面试题,在历年大厂的面试中出现的频率很高,可以说是看到这些题就是赚到!想了解更多Java mybatis的知识,欢迎来到蛙课网,这里不仅有适合初学者的课程——快速上手MyBatis,也有针对MyBatis核心源码解析的课程,适合有进阶需求的人学习。

0人推荐
共同学习,写下你的评论
0条评论
忧郁小姐姐
程序员忧郁小姐姐

8篇文章贡献25779字

作者相关文章更多>

推荐相关文章更多>

Java数据结构

HelloWorld10-31 08:24

浅谈MySQL中SQL优化的常用方法

军哥08-12 23:29

五分钟读懂UML类图

江湖人称小李白12-10 10:41

MyBatis开发框架的四大核心

IT逐梦者08-17 21:43

一次搞定continue,break和return

HelloWorld11-06 11:19

发评论

举报

0/150

取消