有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准
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配置项中,你可能会看到如下例子:
<mapper namespace="com.example.mapper.UserMapper">
<select id="selectUser" parameterType="int" resultMap="UserResultMap">
SELECT * FROM users WHERE id = #{id}
</select>
<resultMap id="UserResultMap" type="com.example.model.User">
<result column="id" property="id" />
<result column="name" property="name" />
<result column="email" property="email" />
</resultMap>
</mapper>
在这个例子中:
- namespace: 命名空间用于隔离SQL语句的ID。
- select: 表明这是一个查询操作。
- id: SQL语句的唯一标识。
- parameterType: 入参的类型。
- resultMap: 结果映射的唯一标识,描述了如何将SQL查询返回的结果集映射到Java对象。
当MyBatis启动时,它会解析XML映射文件中的这些信息,并将它们转换成相应的MappedStatement、ResultMap和ParameterMap等内部数据结构,这样当你通过SqlSession执行操作时,MyBatis就能知道如何构造SQL语句、如何传递参数、以及如何将结果集映射到Java对象上。
本文是原创文章,采用 CC BY-NC-SA 4.0 协议,完整转载请注明来自 小朱
评论
隐私政策
0/500
滚动到此处加载评论...


