我正在创建一个MongoRepository,需要创建一个计数查询。有人可以通过SpringData MongoDB MongoRepository工具提供一个最佳方法的例子吗?所有的例子我都能找到引用返回列表而不是计数。
这是我想要做的事情(显然它不起作用):
public interface SchoolRepository extends MongoRepository<School, String> {
@Query("db.school.count({studentStatus: ?0});")
int getCountOfStudents(int studentStatus);
}
感谢。 -AP _
答案 0 :(得分:1)
我发现这个问题,因为我试图做类似的事情。不幸的是,鉴于我在org.springframework.data.repository.query.parser.PartTree中看到的内容:
private static final Pattern PREFIX_TEMPLATE = Pattern.compile("^(find|read|get)(\\p{Upper}.*?)??By");
似乎不支持。
相反,我们可以通过创建新接口和实现它的类来向存储库添加自定义行为(请参阅reference manual section 1.4.1)。
public interface SchoolRepository extends CrudRepository<School, String>, SchoolRepositoryCustom {
// find... read... get...
}
public interface SchoolRepositoryCustom {
int getCountOfStudents(int studentStatus);
}
@Service
public class SchoolRepositoryImpl implements SchoolRepositoryCustom {
@Autowired
private SchoolRepository schoolRepository;
public int getCountOfStudents(int studentStatus) {
// ...
}
}
请注意,该类名为SchoolRepositoryImpl,而不是SchoolRepositoryCustomImpl。