mybatis中LambdaQueryWrapper的left
时间: 2023-12-16 21:28:17 浏览: 73
LambdaQueryWrapper的left方法用于拼接SQL中的左连接查询条件。left方法接收两个参数,第一个参数为要关联的表名,第二个参数为关联条件。例如,假设我们有两张表,一张是user表,另一张是order表,我们需要查询user表中所有的用户以及他们的订单信息,可以使用LambdaQueryWrapper的left方法进行左连接查询,示例代码如下:
```java
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.left(User::getId, Order::getUserId).eq(User::getId, 1);
List<User> userList = userMapper.selectList(wrapper);
```
上述代码中,我们使用LambdaQueryWrapper的left方法进行左连接查询,关联的表名为order,关联条件为user.id = order.user_id,最后使用eq方法添加查询条件,查询id为1的用户信息以及他的订单信息。
相关问题
mybatis plus LambdaQueryWrapper leftjoin 排除多个字段
可以使用 `select` 方法来指定查询的字段,排除不需要的字段。
例如,假设有两个表 `user` 和 `order`,需要查询用户表中的所有用户,以及他们的订单数量。但是不需要查询订单表中的其他字段,只需要查询订单数量。可以使用以下代码:
```
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.select(User.class, info -> !info.getColumn().equals("password") && !info.getColumn().equals("createTime"))
.leftJoin(Order.class, Order::getUserId, User::getId)
.groupBy(User::getId)
.select(User::getId, User::getName, User::getAge, count(Order::getId).as("orderCount"));
List<User> userList = userMapper.selectList(wrapper);
```
在上面的代码中,使用 `select` 方法来指定查询的字段,其中 `info.getColumn()` 方法可以获取当前字段的名称,然后判断是否为需要排除的字段,如果是就返回 `false`,否则返回 `true`。最后使用 `count` 方法来统计订单数量,并使用 `as` 方法来设置别名为 `orderCount`。
注意,`select` 方法需要在 `leftJoin` 方法之前调用,否则会抛出异常。
mybatis plus LambdaQueryWrapper 分页关联查询
MyBatis-Plus LambdaQueryWrapper是MyBatis-Plus框架中的一个查询构建器,可以使用Lambda表达式来构建查询条件,使得查询语句更加简洁易懂,同时也提供了对分页查询的支持。
在LambdaQueryWrapper中,我们可以使用join方法来实现关联查询。关联查询可以使用Inner Join、Left Join、Right Join等不同的关联方式,具体使用方式如下:
```java
// 构建LambdaQueryWrapper对象
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
// 添加关联查询条件
wrapper.eq(User::getUserId, 1)
.leftJoin(UserRole::getUserId, UserRole::getUserId)
.eq(UserRole::getRoleId, 2);
// 分页查询
Page<User> page = new Page<>(1, 10);
IPage<User> result = userService.page(page, wrapper);
```
在上面的代码中,我们通过LambdaQueryWrapper对象的leftJoin方法来添加关联查询条件,将User表和UserRole表通过UserId字段进行关联,然后使用eq方法来添加查询条件,查询UserId为1且RoleId为2的记录。最后,我们使用MyBatis-Plus提供的分页查询方法page来实现分页查询。
需要注意的是,在LambdaQueryWrapper中进行关联查询时,需要注意表名的设置。如果关联的表名与实体类名不一致,需要在实体类中添加@Table注解,并在注解中设置表名,例如:
```java
@Table(name = "sys_user_role")
public class UserRole {
// 省略属性和方法
}
```
在上面的代码中,我们通过@Table注解来设置UserRole实体类对应的表名为sys_user_role,这样在关联查询时就可以正确的指定表名。
阅读全文