private Specification<AuditItem> getSpecification(AuditItem auditItem) { return (root, query, builder) -> { List<Predicate> list = new ArrayList<>(); if (auditItem != null) { if (StringUtil.isNotEmpty(auditItem.getProfessionalCategoryId())) { list.add(builder.equal(root.get("professionalCategoryId").as(String.class), auditItem.getProfessionalCategoryId())); } if (StringUtil.isNotEmpty(auditItem.getName())) { list.add(builder.like(root.get("name").as(String.class), "%" + auditItem.getName() + "%")); } if (StringUtil.isNotEmpty(auditItem.getAuditProceduresMethod())) { list.add(builder.like(root.get("auditProceduresMethod").as(String.class), "%" + auditItem.getAuditProceduresMethod() + "%")); } if (StringUtil.isNotEmpty(auditItem.getRemark())) { list.add(builder.like(root.get("remark").as(String.class), "%" + auditItem.getRemark() + "%")); } Integer level = auditItem.getLevel(); if (level != null) { list.add(builder.equal(root.get("level").as(Integer.class), level)); } if (StringUtil.isNotEmpty(auditItem.getSign())) { list.add(builder.equal(root.get("sign").as(String.class), auditItem.getSign())); } if (StringUtil.isNotEmpty(auditItem.getRequireInfo())) { list.add(builder.like(root.get("requireInfo").as(String.class), "%" + auditItem.getRequireInfo() + "%")); } } Predicate[] p = new Predicate[list.size()]; return builder.and(list.toArray(p)); }; }
时间: 2024-04-19 22:28:08 浏览: 110
C#_List用法详解
这段代码是一个方法,它返回一个 Specification 对象,用于构建 JPA 查询条件。它接受一个 AuditItem 对象作为参数,并根据 AuditItem 的属性值构建查询条件。
代码的逻辑如下:
1. 创建一个空的 Predicate 列表 `list`,用于存储查询条件。
2. 如果传入的 `auditItem` 不为 null,则根据其属性值构建相应的查询条件。
3. 如果 `auditItem` 的 `professionalCategoryId` 属性不为空,则添加一个等于条件。
4. 如果 `auditItem` 的 `name` 属性不为空,则添加一个模糊匹配条件。
5. 如果 `auditItem` 的 `auditProceduresMethod` 属性不为空,则添加一个模糊匹配条件。
6. 如果 `auditItem` 的 `remark` 属性不为空,则添加一个模糊匹配条件。
7. 如果 `auditItem` 的 `level` 属性不为 null,则添加一个等于条件。
8. 如果 `auditItem` 的 `sign` 属性不为空,则添加一个等于条件。
9. 如果 `auditItem` 的 `requireInfo` 属性不为空,则添加一个模糊匹配条件。
10. 将 Predicate 列表转换为数组,并使用 `builder.and()` 方法将它们组合成一个最终的查询条件。
11. 返回构建好的 Specification 对象。
这段代码的作用是根据传入的 AuditItem 对象的属性值,动态构建查询条件,用于 JPA 查询。
阅读全文