mybatis注解三表查询
时间: 2023-11-09 21:05:53 浏览: 55
在 MyBatis 中使用注解进行三表查询可以使用 `@Select` 注解和 SQL 语句来实现。以下是一个示例:
```
@Select("SELECT u.id, u.username, r.role_name, p.permission_name FROM user u " +
"LEFT JOIN user_role ur ON u.id = ur.user_id " +
"LEFT JOIN role r ON ur.role_id = r.id " +
"LEFT JOIN role_permission rp ON r.id = rp.role_id " +
"LEFT JOIN permission p ON rp.permission_id = p.id " +
"WHERE u.id = #{userId}")
@Results({
@Result(property = "id", column = "id"),
@Result(property = "username", column = "username"),
@Result(property = "roles", column = "role_name",
many = @Many(select = "com.example.mapper.RoleMapper.getByRoleName")),
@Result(property = "permissions", column = "permission_name",
many = @Many(select = "com.example.mapper.PermissionMapper.getByPermissionName"))
})
User getUserByIdWithRolesAndPermissions(@Param("userId") Long userId);
```
在这个示例中,我们使用了五个表进行三表查询,查询的结果是一个用户对象,包含该用户的角色和权限信息。我们使用了 `LEFT JOIN` 进行联接查询,然后使用 `@Results` 注解来指定查询结果的映射关系。其中,`@Many` 注解用于指定多对多关系的映射方式,通过 `select` 属性来指定对应的查询方法。在本例中,我们使用了 `RoleMapper` 和 `PermissionMapper` 中的查询方法来获取角色和权限信息。
阅读全文