MyBatis 找到并执行 SQL 的过程大致可以分为以下几个步骤:
-
配置文件加载:
- MyBatis 的核心配置文件(如
mybatis-config.xml
)包含了数据库连接信息、事务管理器配置以及映射器(Mapper)文件的位置等。当 MyBatis 初始化时,它会加载这个配置文件。
- MyBatis 的核心配置文件(如
-
SQL 映射文件解析:
- 映射器文件(Mapper XML 文件)是 MyBatis 的核心,它包含了 SQL 语句的定义、输入参数类型以及输出结果类型。MyBatis 会解析这些文件,并将 SQL 语句以及它们的相关配置信息存储在内存中,以便后续使用。
-
接口与映射文件绑定:
- MyBatis 允许开发者通过定义 Mapper 接口,然后编写对应的 XML 映射文件来定义 SQL 语句。MyBatis 通过接口的全限定名(fully qualified name)来找到对应的 XML 映射文件。这个绑定过程通常是在 MyBatis 初始化时完成的,但也可以在运行时动态完成(例如使用
SqlSessionFactoryBuilder.build(Reader reader, String environment, Properties properties)
方法时)。
- MyBatis 允许开发者通过定义 Mapper 接口,然后编写对应的 XML 映射文件来定义 SQL 语句。MyBatis 通过接口的全限定名(fully qualified name)来找到对应的 XML 映射文件。这个绑定过程通常是在 MyBatis 初始化时完成的,但也可以在运行时动态完成(例如使用
-
执行 SQL:
- 当开发者通过 Mapper 接口调用某个方法时(比如
findUserById(int id)
),MyBatis 会查找与该接口方法对应的 XML 映射文件中的 SQL 语句。这个查找过程通常是通过接口方法的名称和参数类型等信息来完成的。 - MyBatis 会将接口方法的参数设置到 SQL 语句中(通过预处理语句),然后执行 SQL 语句。
- 执行 SQL 语句后,MyBatis 会将结果集映射成 Java 对象(POJOs),并返回给调用者。
- 当开发者通过 Mapper 接口调用某个方法时(比如
-
结果映射:
- 在 XML 映射文件中,除了定义 SQL 语句外,还需要定义如何将数据库的结果集映射到 Java 对象中。这通常通过
<resultMap>
元素来完成,它详细描述了数据库列与 Java 对象属性之间的映射关系。
- 在 XML 映射文件中,除了定义 SQL 语句外,还需要定义如何将数据库的结果集映射到 Java 对象中。这通常通过