最新面试题【mybatis】

1,#{},${}区别?

#{}是占位符,可以避免SQL注入,~在执行时会将SQL中的#{}替换为?号。${}是拼接符

2,实体类中的字段和表中不一致该如何处理?

第一种通过起别名的方式。第二种使用resultmap进行一 一对应

3,动态SQL执行原理,有哪些?

执行原理是使用OGNL从SQL参数对象中计算表达式的值,根据表达式的值完成逻辑判断并动态拼接SQL,有if,foreach,where,trim,set,choose,when,otherwise,bind等

4,不同的xml映射文件,id可以相同吗?

不同的xml映射文件,如果配置了namespace,那么只要namespace+id不重复即可。如果没有配置namespace,那么id是不能重复的。namespace+id是作为Map的key来使用的。

5,使用的mapper接口时有哪些要求?

1,mapper接口的方法名和mapper.xml中定义的SQL id要一致。2,mapper接口中定义的参数类型要和配置文件中定义的SQL的参数类型(parameterType)对应。3,mapper接口的返回值类型要和配置文件中定义的SQL的返回值类型(resultType)对应。4,配置文件中的namespace就是mapper接口的全类路径名

mybatis mybatisplus区别

MyBatis 和 MyBatis Plus 是 Java 中用于数据库交互的两个框架,虽然它们有相似的用途,但在功能和设计目标上存在一些显著的区别。以下是它们之间的主要区别:

1. 概念

  • MyBatis

    • MyBatis 是一个持久层框架,用于简化数据库操作。它通过 XML 配置或注解来映射 SQL 语句,以便在 Java 应用程序中与数据库进行交互。
  • MyBatis Plus

    • MyBatis Plus 是在 MyBatis 基础上进行扩展的一个增强工具,旨在简化 MyBatis 的开发工作,提供了更多的简化功能和开箱即用的 CRUD (增删改查)操作。

2. 功能

  • MyBatis

    • 提供基本的 ORM 功能,可以自定义 SQL 语句。
    • 需要手动编写 SQL 语句并进行结果映射。
    • 自由度高,但配置较复杂,尤其是在复杂业务逻辑的场景中。
  • MyBatis Plus

    • 提供了开箱即用的 CRUD 功能,这些操作可以直接通过方法调用来实现,无需手动编写 SQL。
    • 提供了丰富的插件,包括分页、性能分析、乐观锁、逻辑删除等功能。
    • 支持自动生成 SQL,以提高开发效率。

3. 代码简化

  • MyBatis

    • 需要编写大量的 SQL 语句和映射配置,代码量相对较大。
  • MyBatis Plus

    • 简化了常见操作,通过提供通用的 Service 和 Mapper,使得 CRUD 操作的代码量大幅减少,使用更方便。

4. 适用场景

  • MyBatis

    • 适用于对 SQL 语句有复杂要求的场景,如需要精细控制执行的 SQL 及其性能的情况下。
  • MyBatis Plus

    • 更适合快速开发和简单 CRUD 操作的场景,尤其是在没有复杂 SQL 需求的项目中,可以显著提高开发效率。

5. 学习曲线

  • MyBatis

    • 由于需要更多的 SQL 和映射配置,学习曲线相对陡峭。
  • MyBatis Plus

    • 提供了更易于理解和使用的 API,降低了学习成本,可以快速上手。

6. 社区和支持

  • MyBatis

    • MyBatis 在行业中有着广泛的用户基础和成熟的社区支持。
  • MyBatis Plus

    • 作为 MyBatis 的增强工具,MyBatis Plus 也拥有良好的社区支持和文档。

总结

  • MyBatis 是一个强大的持久层框架,提供灵活的 SQL 映射能力。MyBatis Plus 则在此基础上进一步封装,提供了更便捷的 CRUD 操作和扩展功能,非常适合快速开发和高效的项目实践。
  • 选择哪个框架通常取决于项目需求的复杂性、团队的熟悉程度以及开发效率的要求。

你可能感兴趣的:(1024程序员节,java)