innerWrapper.eq(Order::getHomestayId, homeId) .apply("TO_DAYS(in_time) = TO_DAYS('2023-06-22')"); queryWrapper.eq(CustomerOrder::getIsDelete, "0") .inSql(CustomerOrder::getOrderId,"SELECT id FROM sys_order WHERE " + innerWrapper.getSqlSegment()); queryWrapper调用innerWrapper 并可以参数的传递
时间: 2024-02-23 10:58:09 浏览: 119
好的,根据您的要求,我来解答您的问题。
根据您提供的代码,可以将其改写为以下形式:
```java
LambdaQueryWrapper<Order> innerWrapper = Wrappers.<Order>lambdaQuery()
.eq(Order::getHomestayId, homeId)
.apply("TO_DAYS(in_time) = TO_DAYS('2023-06-22')");
LambdaQueryWrapper<CustomerOrder> queryWrapper = Wrappers.<CustomerOrder>lambdaQuery()
.eq(CustomerOrder::getIsDelete, "0")
.inSql(CustomerOrder::getOrderId, "SELECT id FROM sys_order WHERE " + innerWrapper.getSqlSegment(), innerWrapper.getParam());
List<CustomerOrder> list = customerOrderMapper.selectList(queryWrapper);
```
以上代码中,`innerWrapper`用于构建内部查询条件,使用了`eq`方法实现等于条件,`apply`方法用于构建日期条件,其中日期使用了固定值`'2023-06-22'`。您需要将其替换为实际的值。
`queryWrapper`用于构建外部查询条件,使用了`eq`方法实现等于条件,`inSql`方法用于构建子查询,其中子查询中调用了`innerWrapper.getSqlSegment()`和`innerWrapper.getParam()`方法,实现内部查询条件的传递。
最后,使用`customerOrderMapper.selectList(queryWrapper)`方法执行查询,并将结果保存在`list`中。您需要将`customerOrderMapper`替换为实际的Mapper对象。
希望以上解答能够帮到您,如果还有任何问题,请随时提出。
阅读全文