以下是一个简单的关联映射的例子:
<resultMap id="userResultMap" type="com.example.model.User">
<id column="id" property="id"/>
<result column="username" property="username"/>
<result column="password" property="password"/>
<!-- 配置一对一的关联 -->
<association property="profile" resultMap="profileResultMap"/>
</resultMap>
<resultMap id="profileResultMap" type="com.example.model.Profile">
<id column="profile_id" property="id"/>
<result column="email" property="email"/>
<result column="phone" property="phone"/>
</resultMap>
在这个例子中,userResultMap 中通过 <association> 元素配置了一对一的关联关系,关联的目标是 profileResultMap。
- property 属性指定了关联关系映射到 User 对象的哪个属性上,这里是 profile。
- resultMap 属性指定了关联对象的结果映射规则,这里是 profileResultMap。
这样配置后,当查询 User 对象时,MyBatis会自动查询关联的 Profile 对象并将其映射到 User 对象的 profile 属性上。
嵌套查询
在关联映射中,可以使用嵌套查询来完成关联对象的加载。以下是一个使用嵌套查询的例子:
<resultMap id="userResultMap" type="com.example.model.User">
<id column="id" property="id"/>
<result column="username" property="username"/>
<result column="password" property="password"/>
<!-- 配置嵌套查询的关联 -->
<association property="profile" resultMap="profileResultMap">
<id column="user_id" property="id"/>
</association>
</resultMap>
<resultMap id="profileResultMap" type="com.example.model.Profile">
<id column="profile_id" property="id"/>
<result column="email" property="email"/>
<result column="phone" property="phone"/>
</resultMap>
在这个例子中,userResultMap 中通过 <association> 元素配置了嵌套查询的一对一的关联关系。
- <id> 元素用于配置关联对象查询的条件,这里表示查询条件是 Profile 对象的 id 列与 User 对象的 user_id 列的匹配。
通过嵌套查询,可以将关联对象的查询逻辑嵌套到主查询中,避免了多次查询数据库的开销。
这是一对一关联的基本配置方式,MyBatis还支持一对多关联和多对多关联,具体配置方式可以参考官方文档:[MyBatis - 关联](https://mybatis.org/mybatis-3/zh/sqlmap-xml.html#Association)。
转载请注明出处:http://www.pingtaimeng.com/article/detail/7012/MyBatis