matching方法是ExampleMatcher类中的一个方法,用于将一个查询对象与一个示例对象进行比较,并根据比较结果生成一个Criteria对象,用于查询数据库。它的定义如下:
Criteria matching(Object example);
其中,example参数是一个示例对象,可以是任何Java对象。matching方法会根据该示例对象的属性值和ExampleMatcher对象中定义的匹配规则,生成一个Criteria对象,用于查询数据库。
下面是一个示例代码:
ExampleMatcher matcher = ExampleMatcher.matching()
.withMatcher("name", startsWith().ignoreCase())
.withMatcher("age", greaterThan(18));
User user = new User();
user.setName("John");
user.setAge(25);
Criteria criteria = matcher.matching(user);
在上面的代码中,我们创建了一个ExampleMatcher对象,定义了两个匹配规则:name属性应该以传入的查询参数为开头,不区分大小写,而age属性应该大于18。然后,我们创建了一个示例对象user,并将其应用于ExampleMatcher对象的matching方法中,生成一个Criteria对象criteria,用于查询数据库。
最终生成的Criteria对象会表示一个MongoDB查询,包含了两个条件:name属性以"John"为开头,不区分大小写,age属性大于18。我们可以将该Criteria对象用于MongoDB的查询方法中,例如:
List<User> users = mongoTemplate.find(Query.query(criteria), User.class);
示例:
ExampleMatcher example = ExampleMatcher.matching(); EdcDataAttachmentConfigPo edcDataAttachmentContext = EdcDataAttachmentConfigPo.builder() .natureKey(EdcDataAttachmentConfigKeyPo.builder().dataAttachType(natureKey.getDataAttachType()) .productName(natureKey.getProductName()) .productRevision(natureKey.getProductRevision()) .topPlanName(natureKey.getTopPlanName()) .topPlanRevision(natureKey.getTopPlanRevision()) .subPlanName(natureKey.getSubPlanName()) .subPlanRevision(natureKey.getSubPlanRevision()) .stepName(natureKey.getStepName()) .stepSeq(natureKey.getStepSeq()) .edcPlanName(natureKey.getEdcPlanName()) .edcPlanRevision(natureKey.getEdcPlanRevision()) .build()) .build(); Example<EdcDataAttachmentConfigPo> ex = Example.of(edcDataAttachmentContext, example);dao.findAll(ex)