SELECT * FROM T_BUSINESS_VIRTUAL_LOCATION WHERE F_TRAY_CODE = (SELECT TOP 1 F_TRAY_CODE FROM T_BUSINESS_STOCK_BILL WHERE F_STATUS = #{status} AND F_TYPE = #{type} AND F_IS_VIRTUAL = '1' ORDER BY MAKE_TIME ASC) 用queryWrapper().lambda().select
时间: 2023-09-16 18:16:05 浏览: 44
可以使用queryWrapper().lambda().select方法来构建上述SQL查询语句,如下所示:
```
queryWrapper().lambda().select(VirtualLocation::getId, VirtualLocation::getName)
.eq(VirtualLocation::getTrayCode,
Wrappers.<VirtualLocation>lambdaQuery()
.select(VirtualLocation::getTrayCode)
.eq(StockBill::getStatus, status)
.eq(StockBill::getType, type)
.eq(StockBill::getIsVirtual, "1")
.orderByAsc(StockBill::getMakeTime)
.last("LIMIT 1")
);
```
上面的代码中,我们首先通过select方法来指定需要查询的字段,这里使用VirtualLocation::getId和VirtualLocation::getName指定了需要查询的字段。然后通过eq方法来实现WHERE条件的指定,其中第一个参数是实体类字段的引用,第二个参数是值。
在这里我们使用了一个Wrappers.<VirtualLocation>lambdaQuery()方法来创建一个子查询,用于查询满足条件的第一个可用的托盘编码。子查询中使用了StockBill::getStatus、StockBill::getType和StockBill::getIsVirtual等实体类字段的引用来指定查询条件,使用orderByAsc方法来指定按照创建时间升序排序,并使用last方法来指定只返回第一条记录。最后将子查询作为eq方法的参数来实现主查询中WHERE条件的指定。