mybatisplus多表关联查询demo
时间: 2023-06-09 21:03:31 浏览: 105
mybatisplus分页查询
当然,我可以为您提供一个使用Mybatis Plus进行多表关联查询的示例。以下是示例代码:
```java
public interface UserMapper extends BaseMapper<User> {
/**
* 多表关联查询示例
* @param id 用户id
* @return UserVo
*/
UserVo getUserVoById(Long id);
}
```
```java
public interface RoleMapper extends BaseMapper<Role> {
/**
* 多表关联查询示例
* @param id 用户id
* @return List<Role>
*/
List<Role> selectRolesByUserId(@Param("userId") Long id);
}
```
```java
public interface UserRoleMapper extends BaseMapper<UserRole> {
}
```
```java
@AllArgsConstructor
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
private final RoleMapper roleMapper;
private final UserRoleMapper userRoleMapper;
@Override
public UserVo getUserVoById(Long id) {
// 从user表中查询出id为传入参数id的用户
User user = getById(id);
if (user == null) {
return null;
}
// 从user_role表中查询出user_id为传入参数id的记录
QueryWrapper<UserRole> userRoleWrapper = new QueryWrapper<>();
userRoleWrapper.eq("user_id", id);
List<UserRole> userRoles = userRoleMapper.selectList(userRoleWrapper);
if (CollectionUtils.isEmpty(userRoles)) {
return null;
}
// 将查询出的roleId封装到List中
List<Long> roleIds = userRoles.stream().map(UserRole::getRoleId).collect(Collectors.toList());
// 根据roleIds查询对应的role
List<Role> roles = roleMapper.selectBatchIds(roleIds);
return UserVo.builder().user(user).roles(roles).build();
}
}
```
这个示例展示了如何使用Mybatis Plus进行多表关联查询,包括查询User表,查询UserRole表,查询Role表。希望能对您有所帮助。
阅读全文