• 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

    正确结果:

  • 相关阅读:
    C语言内存分析
    算法之快速排序
    单链表逆转
    C程序设计语言之一
    vim插件配置(一)
    makefile示例
    cocos2d基础入门
    Makefile
    Makefile
    GCC编译四阶段
  • 原文地址:https://www.cnblogs.com/axibug/p/16359926.html
Copyright © 2020-2023  润新知