mybatis 多对多查询
时间: 2023-11-09 22:16:31 浏览: 50
MyBatis 是一个开源的 Java 持久层框架,可以用于实现多对多查询。在 MyBatis 中,多对多查询可以通过中间表来实现。
假设我们有两个实体类 `User` 和 `Role`,它们之间存在多对多关系。首先,在数据库中创建三张表:`user`、`role` 和 `user_role`。
`user` 表包含以下字段:
- `id`:用户 ID
- `name`:用户姓名
`role` 表包含以下字段:
- `id`:角色 ID
- `name`:角色名称
`user_role` 表包含以下字段:
- `user_id`:用户 ID
- `role_id`:角色 ID
接下来,在 MyBatis 的映射文件中定义多对多查询的 SQL 语句。假设我们需要查询某个用户拥有的所有角色,可以使用如下 SQL:
```xml
<select id="getUserRoles" resultMap="UserRoleResultMap">
SELECT r.id, r.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 = #{userId}
</select>
```
然后,在对应的 Java 接口中声明该方法:
```java
public interface UserMapper {
List<Role> getUserRoles(int userId);
}
```
最后,在实际使用时,通过调用该方法即可获取该用户所拥有的所有角色:
```java
List<Role> roles = userMapper.getUserRoles(userId);
```
这样就完成了 MyBatis 的多对多查询。请注意,以上示例仅为演示多对多查询的基本用法,实际情况下可能需要根据具体业务需求进行适当的修改和扩展。