使用mybatis plus实现多表查询操作,(无需xml)

以下是一些使用 QueryWrapper 实现多表操作的例子:1. 多表关联查询

```java
// User 和 Role 是多对多关系,使用中间表 user_role
public List<User> getUserListByRoleId(Integer roleId) {
    QueryWrapper<User> wrapper = new QueryWrapper<>();
    wrapper.select("user.*").distinct()
            .from("user")
            .leftJoin("user_role").on("user.id=user_role.user_id")
            .eq("user_role.role_id", roleId);
    return userMapper.selectList(wrapper);
}
```

上面的代码实现了查询拥有指定 roleId 的所有用户信息。

2. 多表关联查询并排序

```java
public List<User> getUserListOrderByRoleName() {
    QueryWrapper<User> wrapper = new QueryWrapper<>();
    wrapper.select("user.*").distinct()
            .from("user")
            .leftJoin("user_role").on("user.id=user_role.user_id")
            .leftJoin("role").on("user_role.role_id=role.id")
            .orderByAsc("role.name");
    return userMapper.selectList(wrapper);
}
```

上面的代码实现了查询所有用户信息,并按照角色名称升序排序。

3. 多表关联查询并分页

```java
public IPage<User> getUserListByPage(Integer roleId, Integer pageNum, Integer pageSize) {
    QueryWrapper<User> wrapper = new QueryWrapper<>();
    wrapper.select("user.*").distinct()
            .from("user")
            .leftJoin("user_role").on("user.id=user_role.user_id")
            .eq("user_role.role_id", roleId);
    Page<User> page = new Page<>(pageNum, pageSize);
    return userMapper.selectPage(page, wrapper);
}
```

上面的代码实现了查询拥有指定 roleId 的所有用户信息,并进行分页处理。

4. 多表关联查询并统计结果

```java
public Integer getUserCountByRoleId(Integer roleId) {
    QueryWrapper<User> wrapper = new QueryWrapper<>();
    wrapper.select("count(distinct user.id) as count")
            .from("user")
            .leftJoin("user_role").on("user.id=user_role.user_id")
            .eq("user_role.role_id", roleId);
    Map<String, Object> map = userMapper.selectMaps(wrapper).get(0);
    return Integer.parseInt(map.get("count