Spring Boot获取两个日期之间的字段
我在Spring Boot中有一个DTO,它引用了MongoDB上的一个集合Spring Boot获取两个日期之间的字段,spring,mongodb,spring-boot,Spring,Mongodb,Spring Boot,我在Spring Boot中有一个DTO,它引用了MongoDB上的一个集合 @Document(collection = "his") @AllArgsConstructor @Getter @Setter public class His{ @Id private String internalId; private String person; private String type; private Date date; } 我想找到所有日期
@Document(collection = "his")
@AllArgsConstructor
@Getter
@Setter
public class His{
@Id
private String internalId;
private String person;
private String type;
private Date date;
}
我想找到所有日期在两个日期之间的对象。我已经有了这个(只有两个月的差异):
试试那样的
public interface HisRepository extends MongoRepository<His, String> {
@Query("{ date: { $gte: ?0, $lte: ?1 } }")
List<His> findObjects(Date dateFrom, Date dateTo);
List<His> findAllByDateGreaterThanEqualAndDateLessThanEqual(Date dateFrom, Date dateTo);
}
公共接口HisRepository扩展了MongoRepository{
@查询({date:{$gte:-0,$lte:-1}}”)
列出FindObject(Date-dateFrom,Date-dateTo);
列出FindAllByDate大于EqualAndAlessThanEqual(日期日期从,日期到);
}
请注意您的边界条件:$gte
或$gt
,$lte
或$lt
我的界面是从Crudepository扩展而来的,我无法更改它。您还可以使用基于方法名称的查询。
@Override
public ResponseEntity<List<His>> getPagosByFechaPago(String dateTo, String dateFrom) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date dateHasta = null, dateDesde = null;
try {
dateHasta = formatter.parse(dateTo);
dateDesde = formatter.parse(dateFrom);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Period diff = Period.between(LocalDate.parse(dateFrom), LocalDate.parse(dateTo));
if(diff.getYears() == 0 && diff.getMonths() <= 2 && diff.getMonths() >= -2) {
Query query = new Query();
query.addCriteria(Criteria.where("date").gte(dateHasta).lt(dateDesde));
List<His> response = mongoTemplate.find(query, His.class);
log.info(response.toString());
return new ResponseEntity<>(response, HttpStatus.OK);
} else {
return new ResponseEntity<>(null, HttpStatus.BAD_REQUEST);
}
}
public interface HisRepository extends MongoRepository<His, String> {
@Query("{ date: { $gte: ?0, $lte: ?1 } }")
List<His> findObjects(Date dateFrom, Date dateTo);
List<His> findAllByDateGreaterThanEqualAndDateLessThanEqual(Date dateFrom, Date dateTo);
}