使用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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值