专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 常见问题 2023年比较经典的一套mybaits面试题

2023年比较经典的一套mybaits面试题

更新时间:2023-02-17 16:15:27 来源:动力节点 浏览964次

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

在Java代码中添加sql通配符。

在sql语句中拼接通配符,但是会引起sql注入

2. MyBatis 框架适用场合?

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

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

3. MyBatis是如何进行分页的?分页插件的原理是什么?

Mybatis使用RowBounds对象进行分页,它是针对ResultSet结果集执行的内存分页,而非物理分页。也可以直接编写SQL实现分页或者使用分页插件。

分页插件的原理:实现MyBatis提供的接口来实现自定义插件,然后在插件的拦截方法内拦截待执行的SQL,最后重写SQL。

4. Dao 接口里的方法,参数不同时,方法能重载吗?

Mapper 接口里的方法,是不能重载的,因为是使用全限名+方法名的保存和寻找策略。Mapper 接口的工作原理是 JDK 动态代理,Mybatis 运行时会使用 JDK动态代理为 Mapper 接口生成代理对象 proxy,代理对象会拦截接口方法,转而执行 MapperStatement 所代表的 sql,然后将 sql 执行结果返回。

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

使用resultMap标签,定义数据库列名和对象属性名之间的映射关系。

使用sql列的别名功能,将列的别名书写为对象属性名。

有了列名与属性名的映射关系后,MyBatis通过反射创建对象,同时使用反射给对象的属性逐一赋值并返回。

6. Mybaits 的优缺点?

优点:

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

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

很好的与各种数据库兼容,能够与 Spring 很好的集成;

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

缺点:

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

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

7. 谈谈你对MyBatis的理解?

MyBatis是一个可以自定义SQL、存储过程和高级映射的持久层框架,它内部封装了JDBC,开发时只需要关注SQL语句本身。程序员直接编写原生态SQL,可以严格控制sql执行性能,灵活度高。

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

不同的Xml映射文件,如果配置了namespace,id可以重复。如果没有配置namespace,id不能重复。原因是namespace+id是作为Map的key使用的,如果没有namespace,id重复会导致数据互相覆盖。有了namespace,id就可以重复,namespace不同,namespace+id自然也就不同。

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

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

使用#可以有效的防止SQL注入,提高系统安全性。

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

通过在查询的sql语句中定义字段名的别名。

通过resultMap标签来映射字段名和实体类属性名的一一对应的关系。

以上就是“2023年比较经典的一套mybaits面试题”,你能回答上来吗?如果想要了解更多的Java面试题相关内容,可以关注动力节点Java官网。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>