gpt4 book ai didi

mongodb-query - 我们可以在同一个应用程序中同时使用 MongoRepository 和 MongoTemplate

转载 作者:行者123 更新时间:2023-12-04 12:19:57 31 4
gpt4 key购买 nike

我需要在 MongoDB 上编写一些复杂的查询和一些简单的查询。我可以将 MongoRepository 用于简单查询,将 MongoTemplate 与 Query 或 Criteria 一起用于复杂查询实现相同的应用程序。

在相同的应用程序中同时使用 MongoTemplate 和 MongoRepositories 是否是好的设计。这种方法有什么缺点吗。

还有什么是编写包含大量谓词的复杂查询的最佳方法,这些谓词涉及和,或,IN 和 Not In 在单个查询中。

最佳答案

尽管 MongoRepository 比 MongoTemplate 使用起来简单得多,但模板可以让您对正在实现的查询进行更细粒度的控制。
话虽如此,您仍然可以像这样使用 MongoRepository 实现复杂的查询:

@Query("{'id': ?#{ [0] ? {$exists :true} : [1] }}")
List<Person> findByQueryWithExpressionAndNestedObject(boolean param0, String param1);
更多信息请见 here
但作为一种实践,在你的代码中同时拥有两者实际上是好的,那就是
  • 当您想使用已经实现的存储库时,请使用存储库。
  • 使用 mongo-template 手动实现一些自定义方法当您想要实现具有复杂逻辑的 customMethod 时。

  • 实现
    第1步:
    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 步:
    现在创建一个新的存储库扩展 MongoRepositoryCustomEmployeeRepository使用自定义实现以及存储库的预定义方法。
    interface EmployeeRepository extends MongoRepository<Employee, long>, CustomEmployeeRepository{
    }
    这样你就可以两全其美。有关实现的更多信息,请参阅文档。
    希望这可以帮助。

    关于mongodb-query - 我们可以在同一个应用程序中同时使用 MongoRepository 和 MongoTemplate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50185775/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com