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改造 sqlservier数据库
时间: 2023-08-27 07:04:10 浏览: 72
可以使用如下的QueryWrapper改造该SQL语句:
```
QueryWrapper<BUSINESS_VIRTUAL_LOCATION> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("F_TRAY_CODE",
new QueryWrapper<BUSINESS_STOCK_BILL>()
.select("TOP 1 F_TRAY_CODE")
.eq("F_STATUS", status)
.eq("F_TYPE", type)
.eq("F_IS_VIRTUAL", "1")
.orderByAsc("MAKE_TIME")
);
List<BUSINESS_VIRTUAL_LOCATION> list = businessVirtualLocationMapper.selectList(queryWrapper);
```
这里的`businessVirtualLocationMapper`是`BUSINESS_VIRTUAL_LOCATION`表对应的Mapper接口,需要根据具体情况进行修改。另外,需要注意SQL语句中的`#{status}`和`#{type}`需要替换为具体的参数值。
相关问题
SELECT * FROM T_BUSINESS_VIRTUAL_LOCATION WHERE F_TRAY_CODE = (SELECT TOP 1 F_TRAY_CODE FROM T_BUSINESS_STOCK_BILL WHERE F_IS_VIRTUAL = '1' ORDER BY MAKE_TIME ASC) 用queryWrapper().lambda().select改造 sqlserver数据库
可以使用下面的代码来实现上述SQL查询:
```
queryWrapper().lambda().select(VirtualLocation::getId, VirtualLocation::getName)
.eq(VirtualLocation::getTrayCode,
Wrappers.<VirtualLocation>lambdaQuery()
.select(StockBill::getTrayCode)
.eq(StockBill::getIsVirtual, "1")
.orderByAsc(StockBill::getMakeTime)
.last("FETCH FIRST 1 ROWS ONLY")
);
```
在这里,我们使用了queryWrapper().lambda().select方法来指定需要查询的字段,使用eq方法来实现WHERE条件的指定。
在子查询中,我们使用了Wrappers.<VirtualLocation>lambdaQuery()方法来创建一个子查询,用于查询满足条件的第一个可用的托盘编码。子查询中只是用了StockBill::getIsVirtual等实体类字段的引用来指定查询条件,使用orderByAsc方法来指定按照创建时间升序排序,并使用last方法来指定只返回第一条记录。最后,我们使用了FETCH FIRST 1 ROWS ONLY来实现只返回第一条记录的功能。
最终生成的SQL语句类似于:
```
SELECT id, name FROM T_BUSINESS_VIRTUAL_LOCATION WHERE F_TRAY_CODE = (
SELECT F_TRAY_CODE FROM T_BUSINESS_STOCK_BILL WHERE F_IS_VIRTUAL = '1' ORDER BY MAKE_TIME ASC FETCH FIRST 1 ROWS ONLY
)
```
var serialNumber = input.DestinationLocation; input.DestinationLocation = serialNumber; var storagestate =await _storageLocationrepository.GetBySerialNumberAsync(input.DestinationLocation); if (storagestate.State!=StorageLocationState.Free) { throw new UserFriendlyException($"货位不是空闲状态"); } var tray = await _trayRepository.GetBySerialNumberAsync(input.TraySerialNumber); if (tray.IsBind == true) { throw new UserFriendlyException($"托盘不是空闲状态"); }
这段代码看起来像是一个异步的方法,输入参数包括目标货位的序列号和托盘的序列号。然后,代码会先将目标货位的序列号赋值给一个变量serialNumber,再将input.DestinationLocation的值赋给目标货位序列号。接下来,代码会根据目标货位序列号从仓库中取出该货位的信息,并检查该货位是否为空闲状态。如果不是空闲状态,则会抛出一个UserFriendlyException异常,提示货位不是空闲状态。然后,代码会根据托盘的序列号从仓库中取出该托盘的信息,并检查该托盘是否被绑定使用。如果被绑定使用,则会抛出一个UserFriendlyException异常,提示托盘不是空闲状态。
阅读全文
相关推荐
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)