在同一应用程序中同时使用 MongoTemplate 和 MongoRepositories 是一个好的设计吗?这种方法有什么缺点吗?
此外,编写具有大量谓词的复杂查询的最佳方法是什么,这些谓词在单个查询中涉及 and、or、IN 和 Not In。
话虽如此,您仍然可以像这样使用 MongoRepository 来实现复杂的查询:
@Query("{'id': ?#{ [0] ? {$exists :true} : [1] }}")
List<Person> findByQueryWithExpressionAndNestedObject(boolean param0, String param1);
更多信息可以在这里找到但是作为一种实践,在代码中同时使用这两种方法实际上是很好的,那就是
mongo-template
手动实现一些自定义方法。
interface CustomEmployeeRepository{
List<Employee> CustomEmployeeMethod(String field)
}
第 2 步:
@Repository
public class CustomEmployeeRepositoryImpl implements CustomEmployeeRepository{
@Autowired
private MongoTemplate mongotemplate;
@Override
List<Employee> CustomEmployeeMethod(String field){
}
}
第3步:
现在创建一个扩展 MongoRepository
和
CustomEmployeeRepository
的新存储库以使用自定义实现以及存储库的预定义方法。
interface EmployeeRepository extends MongoRepository<Employee, long>, CustomEmployeeRepository{
}
这样您就可以两全其美。有关实现的更多信息,请参阅文档。
希望这有帮助。