LambdaQueryWrapper 联表查询
时间: 2023-08-25 09:17:40 浏览: 128
使用 LambdaQueryWrapper 进行联表查询的示例代码如下:
```java
import com.baomidou.mybatisplus.core.conditions.query.JoinType;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> getUsersWithRole() {
LambdaQueryWrapper<User> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.select(User::getId, User::getName);
queryWrapper.eq(User::getEnabled, true);
queryWrapper.join(UserRole.class, UserRole::getUserId, User::getId);
queryWrapper.join(Role.class, Role::getId, UserRole::getRoleId);
return userMapper.selectList(queryWrapper);
}
}
```
在上面的示例中,我们假设有三个实体类:`User`、`Role` 和 `UserRole`。`User` 表与 `UserRole` 表通过外键关联,UserRole` 表与 `Role` 表也通过外键关联。
首先,我们创建一个 LambdaQueryWrapper 对象,并指定要查询的字段,如示例中的 `User::getId` 和 `User::getName`。接着,我们可以通过 `eq()` 方法添加查询条件,如示例中的 `User::getEnabled`。
然后,使用 `join()` 方法进行表的连接操作。在示例中,我们通过 `join()` 方法将 `User` 表与 `UserRole` 表和 `Role` 表进行连接。在连接操作中,需要指定连接的目标表和连接条件。
最后,调用 `selectList()` 方法执行查询,并返回查询结果列表。
需要注意的是,以上示例中使用的是单表查询,如果需要在联表查询中添加更多的条件、排序等操作,可以根据具体的业务需求进行相应的调整。
阅读全文