LambdaQueryWrapper联表
时间: 2023-10-14 19:26:10 浏览: 86
LambdaQueryWrapper是mybatis-plus中的一种查询构造器,可以方便地构造复杂的查询条件。如果需要联表查询,可以通过LambdaQueryWrapper的join方法实现。
例如,我们有两个表User和Order,其中Order表中有一个userId字段关联User表的id字段。现在需要查询userId为1的用户的所有订单,可以使用以下代码:
```
LambdaQueryWrapper<Order> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Order::getUserId, 1)
.join(User.class, Order::getUserId, User::getId)
.select(Order::getId, Order::getAmount, User::getUsername);
List<Map<String, Object>> list = orderMapper.selectMaps(wrapper);
```
在LambdaQueryWrapper中,join方法接收三个参数:关联表的实体类、当前表的关联字段、关联表的关联字段。通过select方法可以指定查询的字段,最终调用selectMaps方法可以返回一个List<Map<String, Object>>类型的结果集。
相关问题
lambdaquerywrapper联表查询
在LambdaQueryWrapper中进行联表查询的方法是使用join()方法。可以通过指定关联表的字段和关联条件来实现联表查询。下面是一个示例代码:
```java
public List<User> userList() {
LambdaQueryWrapper<User> wrapper = Wrappers.lambdaQuery();
wrapper.join(UserRole.class, UserRole::getUserId, User::getId)
.eq(UserRole::getRoleName, "admin");
return this.baseMapper.selectList(wrapper);
}
```
在上面的代码中,我们使用join()方法将User表和UserRole表进行关联。通过指定关联表的字段和关联条件,我们可以实现根据UserRole表中的角色名为"admin"来查询对应的User列表。
请注意,这只是一个示例代码,具体的联表查询逻辑可能会根据实际需求而有所不同。
#### 引用[.reference_title]
- *1* *2* *3* [Mybatis-Plus高级查询LambdaQueryWrapper&QueryWrapper](https://blog.csdn.net/weixin_52317961/article/details/128317591)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
LambdaQueryWrapper 联表查询
使用 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()` 方法执行查询,并返回查询结果列表。
需要注意的是,以上示例中使用的是单表查询,如果需要在联表查询中添加更多的条件、排序等操作,可以根据具体的业务需求进行相应的调整。
阅读全文