栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

关于Mybatis-plus中or和and的使用问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于Mybatis-plus中or和and的使用问题

今天在集成权限的时候

发现多条件查询的or和and的拼接出了问题

查看了执行SQL后发现了两种拼接方式

第一种:

查询条件:

queryWrapper.lambda().in(QueQueueEntity::getWarehouseSid, warehouseSids).or().in(QueQueueEntity::getLocationSid, locationSids);
queryWrapper.lambda().in(QueQueueEntity::getStatus, list);
queryWrapper.select("QUE_QUEUE.*, row_number()over(partition by QUEUE_GROUP_SID order by SEQ_PRIORITY) PARK_ORDER");

条件1:  权限集成

条件2:  查询指定状态

条件3: 分组后组内排序函数

执行sql:

SELECT * FROM ( SELECt TMP.*, ROWNUM ROW_ID FROM ( SELECt QUE_QUEUE.*, row_number()over(partition by QUEUE_GROUP_SID order by SEQ_PRIORITY) PARK_ORDER FROM ITMP.QUE_QUEUE WHERe REMOVE_STATUS=0 AND 
(status IN (1,2,3) AND WAREHOUSE_SID IN (232,243) OR LOCATION_SID IN (6387)) 
) TMP WHERe ROWNUM <=20) WHERe ROW_ID > 10

此种写法将条件按顺序拼接

第二种:

查询条件:

queryWrapper.lambda().and(wrapper -> wrapper.in(QueQueueEntity::getWarehouseSid,warehouseSids).or().in(QueQueueEntity::getLocationSid, locationSids));
queryWrapper.lambda().in(QueQueueEntity::getStatus, list);
queryWrapper.select("QUE_QUEUE.*, row_number()over(partition by QUEUE_GROUP_SID order by SEQ_PRIORITY) PARK_ORDER");

条件1:  权限集成

条件2:  查询指定状态

条件3: 分组后组内排序函数

执行sql:

SELECT * FROM ( SELECt TMP.*, ROWNUM ROW_ID FROM ( SELECt QUE_QUEUE.*, row_number()over(partition by QUEUE_GROUP_SID order by SEQ_PRIORITY) PARK_ORDER FROM ITMP.QUE_QUEUE WHERe REMOVE_STATUS=0 AND 
(status IN (1,2,3) AND (WAREHOUSE_SID IN (232,243) OR LOCATION_SID IN (6387))) 
) TMP WHERe ROWNUM <=20) WHERe ROW_ID > 10

此种写法先拼接or后拼接and

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1035782.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号