1. 程式人生 >實用技巧 >其它 >QueryWrapper查詢失效

QueryWrapper查詢失效


錯誤程式碼:

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

正確結果: