所有关于mybatis的面试题及答案
-
MyBatis是什么?它的优点是什么? MyBatis是一个开源的持久层框架,它通过XML或注解配置SQL语句,将Java对象和数据库表进行映射,简化了数据库操作的编写过程。它的优点有:
- 简化了数据库操作的编写过程,通过XML或注解配置SQL语句,减少了编码量。
- 提供了灵活的映射方式,可以根据需要灵活地映射Java对象和数据库表。
- 支持动态SQL,可以根据不同的条件拼接SQL语句,提高了查询的灵活性。
- 提供了缓存机制,可以缓存查询结果,提高了数据库查询的性能。
-
MyBatis的工作原理是什么? MyBatis的工作原理可以分为三个步骤:
- 配置阶段:通过XML或注解配置SQL语句和映射关系。
- 运行阶段:通过SqlSessionFactory创建SqlSession,SqlSession是MyBatis的核心接口,用于执行SQL语句和管理事务。
- 执行阶段:通过SqlSession调用相应的方法执行SQL语句,将结果映射为Java对象并返回。
-
MyBatis的动态SQL是什么?如何使用动态SQL? 动态SQL是指根据不同的条件拼接SQL语句的技术。MyBatis提供了以下几种动态SQL标签:
- if:用于条件判断,根据条件动态拼接SQL语句。
- choose、when、otherwise:用于条件选择,根据条件选择不同的SQL语句。
- foreach:用于循环遍历集合,根据集合的元素动态拼接SQL语句。
- trim、where、set:用于去除多余的SQL语句部分,根据需要动态拼接SQL语句。
-
MyBatis的一级缓存和二级缓存是什么?它们有什么区别?
- 一级缓存:指的是SqlSession级别的缓存,同一个SqlSession中相同的SQL语句和参数会缓存查询结果,可以提高查询的性能。一级缓存默认是开启的,可以通过SqlSession的clearCache方法清空缓存。
- 二级缓存:指的是Mapper级别的缓存,多个SqlSession共享相同的Mapper接口,相同的SQL语句和参数会缓存查询结果,可以提高查询的性能。二级缓存默认是关闭的,可以通过在Mapper接口上添加@CacheNamespace注解开启二级缓存。
-
MyBatis的插件是什么?如何使用插件? 插件是MyBatis提供的扩展机制,可以在SQL执行过程中动态拦截SQL语句并进行处理。插件需要实现Interceptor接口,并通过@Intercepts注解指定要拦截的方法和类型。使用插件的步骤如下:
- 实现Interceptor接口并实现intercept方法,编写插件的逻辑处理。
- 在插件类上添加@Intercepts注解,指定要拦截的方法和类型。
- 在配置文件中配置插件,将插件添加到MyBatis的配置中。
这里只列举了一些常见的面试题及答案,具体的问题还可以根据实际情况进行扩展
原文地址: https://www.cveoy.top/t/topic/ijPN 著作权归作者所有。请勿转载和采集!