我是Java和Spring的新手,我正在使用Spring JPA构建一个系统。我现在正在处理我的服务和控制器类,我想创建一个动态查询。我创建了一个表单,用户可以在其中输入字段中的值,或将其留空。然后,我使用示例匹配器创建一个基于非空字段和数据库中与该对象的非空字段匹配的查询对象的示例。
它与Strings一起工作正常,如果用户输入的数字与数据库中的数字匹配,它可以正常使用数字。我想问社区的是:我们如何使用Spring ExampleMatcher添加逻辑,以便与数字相关的查询不是来自项目的select * *,其中project.return = 10但是例如Select * from Projects where project.return > = 10?
这是一个非常基本的问题,但我在网上到处都是,我找不到答案。我发现的所有消息都说ExampleMatcher只处理字符串,但我发现奇怪的是,这样一个强大的系统没有逻辑来处理更高/更低数字类型的标准。
示例匹配器的代码:
ExampleMatcher matcher = ExampleMatcher.matching()
.withIgnoreNullValues()
.withIgnoreCase()
.withIgnorePaths("projectId", "businessPlans", "projectReturn", "projectAddress.addressId")
我想补充一下:
.withMatcher("projectAmountRaised", IsMoreThan(Long.parseLong()));
我会喜欢拥有什么,但它已被弃用:
public static List getStockDailyRecordCriteria(Date startDate,Date endDate,
Long volume,Session session){
Criteria criteria = session.createCriteria(StockDailyRecord.class);
if(startDate!=null){
criteria.add(Expression.ge("date",startDate));
}
if(endDate!=null){
criteria.add(Expression.le("date",endDate));
}
if(volume!=null){
criteria.add(Expression.ge("volume",volume));
}
criteria.addOrder(Order.asc("date"));
return criteria.list();
}
我正在寻找类似的东西...我可以使用ExampleMatcher从Strings标准创建一个广泛的结果列表,然后编写我自己的逻辑来删除不符合数字标准的对象,但我确信有一个更优雅的方法。
非常感谢你的帮助和放纵!