myabtis 中 xml 映射文件和 MyBatis 内部数据结构之间的映射关系
myabtis 中 xml 映射文件和 MyBatis 内部数据结构之间的映射关系
程序员朱永胜有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步, 认准
https://blog.zysicyj.top
全网最细面试题手册,支持艾宾浩斯记忆法。这是一份最全面、最详细、最高质量的 java 面试题,不建议你死记硬背,只要每天复习一遍,有个大概印象就行了。https://store.amazingmemo.com/chapterDetail/1685324709017001`
MyBatis 中 XML 映射文件和 MyBatis 内部数据结构的映射关系
在 MyBatis 中,XML 映射文件定义了数据库中表和 Java 对象之间的映射关系,并描述了如何执行 SQL 语句和如何完成结果到 Java 对象的映射。当我们在 MyBatis 的配置文件中指定了映射文件的位置后,MyBatis 会在启动时加载和解析这些映射文件,并将它们转换成 MyBatis 内部维护的一种数据结构,以便在执行 SQL 操作时能够使用。
MyBatis 内部主要数据结构:
SqlSessionFactory:
- MyBatis 通过读取配置文件(通常是 mybatis-config.xml)构建
SqlSessionFactory
,它是创建SqlSession
的工厂。
- MyBatis 通过读取配置文件(通常是 mybatis-config.xml)构建
SqlSession:
- 一旦有了
SqlSessionFactory
,就可以通过它来获取SqlSession
的实例。SqlSession
是一个与数据库交互的主要接口。
- 一旦有了
MappedStatement:
- 对于 XML 映射文件中定义的每一个
<select>、<insert>、<update> 或 <delete>
节点,MyBatis 会创建一个MappedStatement
对象,它代表了一条具体的 SQL 语句及其相关的详细信息(如是否是动态 SQL,输入参数,输出结果等)。
- 对于 XML 映射文件中定义的每一个
SqlSource:
MappedStatement
依赖SqlSource
对象来获取要执行的 SQL,SqlSource
是解析 SQL 语句的来源。
ResultMap:
- 结果映射描述了如何从数据库结果集中加载对象,每个结果映射包含了一系列的结果元素或关联,它可以非常细致地控制最终的返回结果。
ParameterMap:
- 参数映射定义了如何将用户提供的参数映射到 SQL 语句中的占位符。
在 MyBatis 配置项中,你可能会看到如下例子:
1 | <mapper namespace="com.example.mapper.UserMapper"> |
在这个例子中:
- namespace: 命名空间用于隔离 SQL 语句的 ID。
- select: 表明这是一个查询操作。
- id: SQL 语句的唯一标识。
- parameterType: 入参的类型。
- resultMap: 结果映射的唯一标识,描述了如何将 SQL 查询返回的结果集映射到 Java 对象。
当 MyBatis 启动时,它会解析 XML 映射文件中的这些信息,并将它们转换成相应的 MappedStatement
、ResultMap
和 ParameterMap
等内部数据结构,这样当你通过 SqlSession
执行操作时,MyBatis 就能知道如何构造 SQL 语句、如何传递参数、以及如何将结果集映射到 Java 对象上。