var orders=workflowOrderMapper.selectList(Wrappers.<WorkflowOrder>lambdaQuery() .in(WorkflowOrder::getObjectId, ids) .eq(WorkflowOrder::getObjectType, 1) .eq(WorkflowOrder::getStatus, MyEnums.WORKFLOW_ORDER___STATUS_ENUM.已完成 .toCode() ) ); 如果in条件中list为null,会发生异常,如何防止这个问题,为空就不判断in语句
时间: 2023-12-28 15:04:55 浏览: 64
可以在代码中增加一个判断条件,判断list是否为null或者是否为空,如果为空则不加入in条件,可以使用如下代码:
```
List<Object> ids = ...; // 假设ids是一个List
LambdaQueryWrapper<WorkflowOrder> queryWrapper = Wrappers.<WorkflowOrder>lambdaQuery()
.eq(WorkflowOrder::getObjectType, 1)
.eq(WorkflowOrder::getStatus, MyEnums.WORKFLOW_ORDER___STATUS_ENUM.已完成.toCode());
if (ids != null && !ids.isEmpty()) {
queryWrapper.in(WorkflowOrder::getObjectId, ids);
}
List<WorkflowOrder> orders = workflowOrderMapper.selectList(queryWrapper);
```
这样就可以避免当list为null或者为空时,in语句导致的异常。
相关问题
请把这段代码简化一下,能让人看懂: List<WorkflowOrder> orders = workflowOrderMapper.selectList(Wrappers.<WorkflowOrder>lambdaQuery() .eq(WorkflowOrder::getWorkflowId, GlobalConstancs.WORKFLOW_KAI_FA_A) .in(WorkflowOrder::getObjectId, documentIds) );
这段代码是一个使用 MyBatis-Plus 框架的查询操作,目的是从数据库中查询出满足条件的 WorkflowOrder 列表。下面是这段代码的简化版:
```
List<WorkflowOrder> orders = workflowOrderMapper.selectList(
Wrappers.<WorkflowOrder>lambdaQuery()
.eq(WorkflowOrder::getWorkflowId, GlobalConstancs.WORKFLOW_KAI_FA_A)
.in(WorkflowOrder::getObjectId, documentIds)
);
```
这段代码的意思是:创建一个 LambdaQueryWrapper 对象,然后使用该对象的 eq() 方法和 in() 方法设置查询条件,最后调用 selectList() 方法执行查询操作,并将结果保存到 orders 变量中。其中:
- eq() 方法表示等于某个值的条件,这里指查询 workflowId 等于 GlobalConstancs.WORKFLOW_KAI_FA_A 的数据;
- in() 方法表示在某个列表中的条件,这里指查询 objectId 在 documentIds 列表中的数据;
- WorkflowOrder::getWorkflowId 和 WorkflowOrder::getObjectId 是 Java 8 中的方法引用语法,表示获取 WorkflowOrder 对象的 workflowId 和 objectId 属性。
这段代码使用了优雅的 Lambda 表达式和方法引用方式,使代码更加简洁易懂。
List<WmMaterial> dbMaterials = wmMaterialMapper.selectList(Wrappers.<WmMaterial>lambdaQuery().in(WmMaterial::getUrl, materials));是什么意思
这段代码使用 MyBatis-Plus 提供的 LambdaQueryWrapper,查询 wm_material 表中 url 字段的值是否在 materials 集合中。
具体来说,Wrappers.<WmMaterial>lambdaQuery() 方法表示创建一个 LambdaQueryWrapper 对象,WmMaterial::getUrl 表示获取 WmMaterial 实体类中的 url 字段作为查询条件,materials 表示一个 String 集合,表示要查询的 url 值集合。
最终执行的 SQL 语句为:
```
SELECT * FROM wm_material WHERE url IN ('url1', 'url2', 'url3', ...)
```
其中,url1、url2、url3 等为 materials 集合中的值。执行结果为一个 List<WmMaterial> 对象,表示查询到的 wm_material 表中符合条件的记录列表。
阅读全文