使用Mybatis编写多对多关系的CRUD1、最少存在2个实体
时间: 2024-10-26 19:03:18 浏览: 21
在MyBatis中,处理多对一关系通常涉及到两个实体类,比如`User`和`Role`,其中`User`有一个关联到`Role`的集合。对于查询操作(CRUD中的`R`,即Read),假设我们已经有了一个`User`的`resultMap`定义:
```xml
<!-- 在mapper.xml文件中 -->
<select id="getUserWithRoles" resultMap="userResultMap">
SELECT u.*, r.role_name
FROM user u
LEFT JOIN role_user ru ON u.id = ru.user_id
LEFT JOIN role r ON ru.role_id = r.id
WHERE u.id = #{userId}
</select>
<resultMap id="userResultMap" type="User">
<id property="id" column="id"/>
<result property="name" column="name"/>
<!-- ...其他属性... -->
<association property="roles" javaType="List<Role>" column="role_id">
<id property="roleId" column="role_id"/>
<result property="roleName" column="role_name"/>
</association>
</resultMap>
```
这里,`userResultMap`映射了`User`对象及其关联的`Role`列表。当执行`getUserWithRoles`时,MyBatis会返回一个`User`对象,其`roles`属性包含了从数据库查询到的与该用户相关的角色信息。
请注意,实际应用中可能需要根据具体表结构调整SQL和`resultMap`配置。
阅读全文