QueryWrapper怎实现两张表的关联查询,使得"goodsList"的数据不为null
时间: 2024-03-12 08:45:36 浏览: 116
在使用 QueryWrapper 进行两张表的关联查询时,需要使用 join 方法进行表连接操作,然后使用 select 方法选择需要查询的字段。例如,如果有两张表 Goods 和 Order,需要查询订单表中所有订单关联的商品信息,则可以按照以下方式构建 QueryWrapper:
```
QueryWrapper<Order> wrapper = new QueryWrapper<>();
wrapper.select("order_id", "order_time", "goods_name", "goods_price")
.eq("order_status", 1)
.eq("user_id", 123)
.join("goods", "goods.goods_id = order.goods_id")
```
其中,join 方法的第一个参数是关联的表名,第二个参数是关联条件,这里使用了等值连接。select 方法选择需要查询的字段,可以通过表别名的方式指定来避免字段名冲突。最后,使用 wrapper 进行查询即可,查询结果中的 "goods_name" 和 "goods_price" 字段将不为 null。
相关问题
PageHelper.getPage(goodsList, "goods", null, null, 10, number, this.getRequest(), null);
这段代码是使用了 PageHelper 插件对商品列表进行分页。其中参数解释如下:
- `goodsList`:原始的商品列表。
- `"goods"`:排序字段,这里是按照 `goods` 字段进行排序。
- `null`:升降序,这里是默认的升序。
- `null`:排序方式,这里是默认的排序方式。
- `10`:每页显示的商品数量,这里是10个商品。
- `number`:当前页数,即要显示第几页的商品。
- `this.getRequest()`:获取当前请求的 HttpServletRequest 对象。
- `null`:额外参数,这里没有设置。
// 练习2: 查询id包含 1,2,6,8 并且 pname 不为null, 且是上架状态 的商品信息 // selectList(wrapper)用LambdaQueryWrapper怎么写
您可以使用LambdaQueryWrapper的链式调用来编写查询条件。下面是一个示例代码,展示如何查询id包含1、2、6、8,并且pname不为null且为上架状态的商品信息:
```java
LambdaQueryWrapper<Goods> wrapper = new LambdaQueryWrapper<>();
wrapper.in(Goods::getId, Arrays.asList(1, 2, 6, 8))
.isNotNull(Goods::getPname)
.eq(Goods::getStatus, "上架");
List<Goods> goodsList = goodsMapper.selectList(wrapper);
```
在这个示例中,我们通过LambdaQueryWrapper的`in`方法来指定id包含1、2、6、8,使用`isNotNull`方法来确保pname不为null,并通过`eq`方法来匹配状态为"上架"的商品。最后,使用`selectList`方法执行查询并将结果存储在`goodsList`中。
请注意,示例中的`Goods`是您的商品实体类,您需要将其替换为您实际使用的实体类。另外,该示例假设您已经通过注入或其他方式获取了`goodsMapper`对象,用于执行数据库操作。
阅读全文