MyBatis面试题, MyBatis 执行原理了解吗?
MyBatis面试题, MyBatis 执行原理了解吗?
QA
Step 1
Q:: MyBatis 执行原理了解吗?
A:: MyBatis 的执行原理主要包括以下几个步骤:首先是创建 SqlSessionFactory,通过配置文件读取数据库连接信息及映射文件。然后,使用 SqlSessionFactory 获取 SqlSession,SqlSession 用于执行映射的 SQL 语句。执行过程包括从 Configuration 中获取 Mapper,解析 SQL 语句,设置参数,执行 SQL,处理结果集并将其转换为相应的 Java 对象。最后关闭 SqlSession 以释放资源。
Step 2
Q:: MyBatis 和 Hibernate 的区别是什么?
A:: MyBatis 和 Hibernate 都是常用的持久层框架。MyBatis 是一个半自动化的 ORM 框架,通过 SQL 映射文件定义 SQL 语句,适用于对 SQL 有精细控制需求的项目。Hibernate 是一个全自动的 ORM 框架,通过 HQL 或 Criteria API 生成 SQL,自动处理对象与数据库表的映射,更加适合快速开发和数据库独立性要求较高的项目。
Step 3
Q:: MyBatis 中的动态 SQL 是什么?
A:: MyBatis 的动态 SQL 是指在 XML 映射文件中使用类似于 JSTL 的标签(如 if、choose、where、set 等)来动态生成 SQL 语句。这使得开发者可以根据不同的条件拼接出不同的 SQL,避免手写大量的代码。动态 SQL 提高了代码的可维护性和复用性。
Step 4
Q:: MyBatis 中如何处理一对多、多对多关系?
A:: MyBatis 处理一对多关系通常使用集合属性映射,可以在映射文件中使用 <collection>
标签进行配置。处理多对多关系则需要在映射文件中使用 <association>
标签结合中间表来映射。此外,还可以使用 resultMap 来进行更复杂的映射处理。
Step 5
Q:: 如何在 MyBatis 中进行分页查询?
A:: MyBatis 中进行分页查询可以通过插件实现,例如 PageHelper 插件。PageHelper 插件提供了简单的分页功能,通过在 SQL 语句前后增加分页参数来实现。此外,也可以手动编写分页 SQL,在 SQL 语句中加入 LIMIT 和 OFFSET 来实现分页。