在 MyBatis 中,可以使用 <collection> 标签将多对多关系的另一张表加入集合。

假设有两张表 user 和 role,它们之间是多对多关系,有一张中间表 user_role 记录了用户和角色的关系。

首先,在 Mapper XML 文件中,可以定义一个 <collection> 标签来映射中间表的关联关系,如下所示:

<resultMap id="userMap" type="User">
  <id property="id" column="id" />
  <result property="name" column="name" />
  <collection property="roles" ofType="Role">
    <id property="id" column="role_id" />
    <result property="name" column="role_name" />
  </collection>
</resultMap>

然后,在查询用户信息时,可以使用 <collection> 标签来关联查询用户的角色信息,如下所示:

<select id="getUser" resultMap="userMap">
  SELECT u.id, u.name, r.id AS role_id, r.name AS role_name
  FROM user u
  JOIN user_role ur ON u.id = ur.user_id
  JOIN role r ON ur.role_id = r.id
  WHERE u.id = #{id}
</select>

这样,在查询用户信息时,MyBatis 会自动将用户的角色信息加入到 roles 集合中。

最后,在 Java 代码中调用 Mapper 的方法来查询用户信息时,就可以获取到用户及其角色的集合了:

User user = userMapper.getUser(id);
List<Role> roles = user.getRoles();
MyBatis 多对多关系映射:将另一张表加入集合

原文地址: https://www.cveoy.top/t/topic/mM48 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录