querywrapper多表联合查询
时间: 2023-08-24 08:09:48 浏览: 138
好的,对于querywrapper多表联合查询,可以使用例如以下代码:
```
List<User> userList = userMapper.selectList(new QueryWrapper<User>()
.select("user.id","user.name","dept.name as deptName")
.eq("user.status",1)
.eq("dept.status",0)
.and(i->i.eq("user.dept_id",deptId).or().eq("dept.parent_id",parentId))
.orderByAsc("user.create_at")
.last("limit " + start + "," + pageSize)
.leftJoin("dept","user.dept_id = dept.id"));
```
其中,我们使用QueryWrapper对象来构建查询条件,通过select方法指定需要查询的字段,通过eq方法设置等值条件查询,通过and方法指定多个条件的逻辑关系,使用leftJoin方法进行多表联合查询等操作。
相关问题
mybaitis plus QueryWrapper多表联合查询并举例
好的,可以的。mybatis plus QueryWrapper 支持多表联合查询,通过实体类的关联关系进行查询,也可以手动设置联合条件。例如,假设我们有两个实体类:User和Order,其中User表和Order表有外键关联,可以使用以下代码进行多表联合查询:
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("user.age", 18).eq("order.status", "paid")
.in("order.product", "computer", "phone").select("user.*", "order.price");
queryWrapper.last("LIMIT 10");
这段代码将查询年龄为18的用户,订单状态为“paid”,订单中的产品为“computer”或“phone”的全部信息,限制返回结果最多10条。希望以上例子可以帮到你。
QueryWrapper多表查询
QueryWrapper是MyBatis Plus提供的一个查询条件构造器,可以用于构建复杂的查询条件。它可以与多表查询一起使用,以实现在多个表之间进行联合查询。
以下是两种使用QueryWrapper实现多表查询的例子:
1. 使用selectPage方法进行分页查询
```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);
}
```
2. 使用selectList方法进行普通查询
```java
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);
}
```
阅读全文