Mybatis 关联查询
时间: 2024-04-24 08:18:36 浏览: 94
Mybatis 一对多和多对一关联查询问题
Mybatis是一种Java持久层框架,它提供了强大的关联查询功能。根据表与表间的关联关系的不同,关联查询分为四种:一对一关联查询、一对多关联查询、多对一关联查询和多对多关联查询[^1]。
一对一关联查询是指两个表之间存在一对一的关系,可以通过在查询语句中使用嵌套查询或者使用关联映射来实现。嵌套查询是指在主查询中嵌套子查询,通过子查询获取关联表的数据。关联映射是指在主查询的结果集中包含关联表的数据,通过配置关联映射来实现。以下是一个示例代码演示了如何在Mybatis中进行一对一关联查询:
```xml
<!-- 定义关联映射 -->
<resultMap id="userMap" type="User">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="address" column="address"/>
<association property="card" javaType="Card">
<id property="id" column="card_id"/>
<result property="cardNo" column="card_no"/>
</association>
</resultMap>
<!-- 执行关联查询 -->
<select id="getUserWithCard" resultMap="userMap">
SELECT u.id, u.name, u.address, c.id as card_id, c.card_no
FROM user u
INNER JOIN card c ON u.card_id = c.id
WHERE u.id = #{id}
</select>
```
以上代码中,定义了一个关联映射`userMap`,其中包含了`User`和`Card`两个实体类的属性映射关系。在执行关联查询时,通过`INNER JOIN`将`user`表和`card`表关联起来,并通过`WHERE`条件限定查询结果。最终将查询结果映射到`User`对象中,其中`User`对象中的`card`属性也会被自动填充。
阅读全文