mybatis相关面试题及答案
时间: 2023-09-21 22:05:25 浏览: 123
Mybatis 常见面试题总结及答案
1. 什么是 MyBatis?
MyBatis 是一种持久化框架,它可以帮助开发人员使用 Java 语言轻松地与关系数据库进行交互。MyBatis 的主要目标是提供与 SQL 映射的简单性和灵活性。
2. MyBatis 的优点是什么?
MyBatis 具有以下优点:
- 灵活性:MyBatis 允许开发人员使用 SQL 映射自定义 SQL 查询,从而提高了应用程序的灵活性。
- 易于使用:MyBatis 易于使用,因为它不需要开发人员执行任何复杂的 ORM 映射。
- 易于调试:MyBatis 可以轻松地启用日志记录,从而使开发人员更容易理解和调试其应用程序。
- 性能较好:MyBatis 的性能很好,因为它可以直接使用 SQL 查询数据库,而不需要通过 ORM 映射进行转换。
3. MyBatis 中的 Mapper 是什么?
Mapper 是 MyBatis 中用于定义 SQL 映射的接口。它包含了数据访问方法的定义,以及这些方法使用的 SQL 语句。Mapper 接口可以使用注解或 XML 文件来定义 SQL 映射。
4. MyBatis 中的动态 SQL 是什么?
动态 SQL 是指根据条件动态生成 SQL 查询语句。MyBatis 中的动态 SQL 支持 if/else 条件判断、foreach 循环、choose/when/otherwise 选择语句等。
5. MyBatis 中的一级缓存和二级缓存是什么?
一级缓存是指在同一个 SqlSession 中,对于同一个查询语句,MyBatis 只查询一次,并将结果缓存起来。二级缓存是指在多个 SqlSession 中,对于同一个查询语句,MyBatis 只查询一次,并将结果缓存到多个 SqlSession 中共享。二级缓存需要在配置文件中进行配置。
6. MyBatis 中的插件是什么?
插件是 MyBatis 中的一种机制,可以在执行 SQL 语句之前或之后,对其进行拦截、修改或扩展。MyBatis 插件需要实现 Interceptor 接口,并在配置文件中进行配置。
7. MyBatis 中的 #{} 和 ${} 有什么区别?
#{} 是 MyBatis 中的占位符,用于防止 SQL 注入攻击,同时也可以防止 SQL 语句中的特殊字符被转义。#{} 会将传入的参数解析为一个占位符,并将其替换为一个 ? 。
${} 是 MyBatis 中的字符拼接符号,会将传入的参数直接拼接到 SQL 语句中。使用 ${} 可能会导致 SQL 注入攻击,因此不建议使用。
阅读全文