spring查询方法

ss2ws0br  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(258)

我使用mongodb和spring。我需要从mongodb收集满足日期和时间条件的文档。作为字符串存储在两个不同字段中的日期和时间。以下是文档示例:

{
  "_id":{"$oid":"aaaaaaaaa"},
  "date":{"$date":"2020-12-14T16:30:00.936Z"},
  "potentialUserId":"5fd6d8d3c766eb16c1acd1d1",
  "strDate":"2020-12-14",
  "strTime":"6:30",
  }

目前,我仅按日期范围从集合中提取所有文档,并使用自定义查找查询:

public interface MeetingRepository extends MongoRepository<Meeting, String> {
    List<Meeting> findByStrDateBetween(String startDay, String endDay);
}

正如我上面提到的,我想从集合文档中获取不仅满足日期条件而且还满足时间条件的文档。
所以为了这个目的,我也可以通过一系列的时间:

List<Meeting> findByStrDateBetween(String startDay, String endDay, String startTime, String endTime);

但我还需要更改函数名的文本:

findByStrDateBetween

所以它不仅按strdate字段过滤,而且按strtime字段过滤。
我的问题是如何改变 findByStrDateBetween 它能同时满足这两个条件吗?

qoefvg9y

qoefvg9y1#

为了实现这一点,还有另一个选择,就是创建一个带注解的接口 @NoRepositoryBean 使用检索数据的方法,然后创建一个实现所创建接口的类。

@NoRepositoryBean
public interface MeetingHandlingRepository {

List<Meeting> findByStrDateBetween(String startDay, String endDay, String startTime, String endTime); 
}

您的界面如下:

public interface MeetingRepository extends MongoRepository<Meeting, String>, MeetingHandlingRepository {
    List<Meeting> findByStrDateBetween(String startDay, String endDay, String startTime, String endTime); 
}

接口的自定义实现:

public MeetingHandlingRepositoryImpl implements MeetingHandlingRepository {
 private final MongoTemplate mongo;

 public MeetingHandlingRepositoryImpl (final MongoTemplate mongo) {
    this.mongo = mongo;
 }

 @Override
 public List<Meeting> findByStrDateBetween(String startDay, String endDay, String startTime,String endTime) {
 // your implementation mongo.find(new Query().......);
 }
}

相关问题