QueryWrapper查詢失效
阿新 • 來源:網路 • 發佈:2022-06-09
錯誤程式碼:
if (!CollectionUtils.isEmpty(warehouseIds)) { lambda.in(StockTransferEntity::getInWarehouseId, warehouseIds).or().in(StockTransferEntity::getOutWarehouseId, warehouseIds); }
列印sql:
SELECT * FROM dfs_stock_transfer WHERE (in_warehouse_id IN (375822,375825,375824,375823) OR out_warehouse_id IN (375822,375825,375824,375823)AND out_warehouse_name = '34') ORDER BY create_time DESC LIMIT 20
錯誤結果:
錯誤原因:
QueryWrapper.in()查詢使後面的QueryWrapper查詢條件失效:
lambda.eq(StockTransferEntity::getOutWarehouseName, outWarehouseName);
正確程式碼:
if (!CollectionUtils.isEmpty(warehouseIds)) { List<Integer> finalWarehouseIds = warehouseIds; lambda.and(wrapper -> wrapper.in(StockTransferEntity::getInWarehouseId, finalWarehouseIds) .or().in(StockTransferEntity::getOutWarehouseId, finalWarehouseIds)); }
列印sql:
SELECT * FROM dfs_stock_transfer WHERE ((in_warehouse_id IN (375822,375825,375824,375823) OR out_warehouse_id IN (375822,375825,375824,375823)) AND out_warehouse_name = '34') ORDER BY create_time DESC LIMIT 20
正確結果:
