当前位置: 首页 > 知识库问答 >
问题:

带MongoTemplate的Spring靴

晁绍辉
2023-03-14

我是Spring Boot和MongoDb的新手。尝试使用Mongo存储库和Spring Boot的一些示例。但在浏览了一些文档后发现,Mongo模板是一个更好的选择。无法使用Mongo模板示例获得正确的Spring Boot。

>

  • 有人能帮我举个同样的例子吗?

    在尝试Mongo模板时,我们是否需要创建用户定义的存储库界面并扩展存储库或CRUD存储库?

  • 共有2个答案

    督烨赫
    2023-03-14

    我发现了一些使用Mongo模板的例子

    http://docs.spring.io/spring-data/data-document/docs/current/reference/html/#mongo-template

    http://www.mkyong.com/mongodb/spring-data-mongodb-hello-world-example/

    如果您有兴趣使用JPA,请看下面

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>
    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongo-java-driver</artifactId>
        <version>{mongo.driver.version}</version>
    </dependency>
    

    应用属性

    #Mongo DB
    spring.data.mongodb.database=
    spring.data.mongodb.host=
    spring.data.mongodb.password=
    spring.data.mongodb.port=
    spring.data.mongodb.repositories.enabled=
    spring.data.mongodb.uri=
    spring.data.mongodb.username=
    

    春靴课

    @SpringBootApplication
    @EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class })
    public class UserApp {
    

    Mongo存储库

    @Repository
    public interface UserRepository extends MongoRepository<User, Long> {}
    
    卫烨烁
    2023-03-14

    为了进一步解释,您甚至可以同时使用这两种方法。

    MongoRepository只是一个抽象层,类似于MongoTemplate,但接口更简单。

    如果您发现使用Spring查询创建进行某种操作过于复杂,并且不知何故不想使用@Query(例如,在构建查询时需要IDE类型提示),您可以扩展MongoRepository并使用MongoTem板作为查询机制。

    首先,我们使用自定义接口扩展我们的存储库。

    @Repository
    public interface ArticleRepository extends MongoRepository<Article, String>, CustomArticleRepository {
    }
    

    然后声明接口。

    public interface CustomArticleRepository {
        List<Article> getArticleFilteredByPage(int page, int num);
    }
    

    然后实现我们的定制存储库。我们可以在这里自动连接MongoTemplate,并使用它查询数据库。

    public class CustomArticleRepositoryImpl implements CustomArticleRepository {
    
        @Autowired
        MongoTemplate mongoTemplate;
    
        @Override
        public List<Article> getArticleFilteredByPage(int page, int num) {
            return mongoTemplate.findAll(Article.class)
                    .skip(page * num)
                    .take(num);
        }
    }
    

    最后,我们使用文章库

    @Service
    public class ArticleServiceImpl {
    
        @Autowired
        private ArticleRepository articleRepository;
    
        public List<Article> getArticleByPage() {
            return articleRepository.getArticleFilteredByPage(1, 10);
        }
    }
    
     类似资料:
    • 我有一个集合,其中的文档如下所示:

    • 目标 我想问一下这个问题: null 我想解决方案可能非常简单,就像查询本身一样,但这些是我在这种基础上迈出的第一步。提前感谢你在这方面的任何帮助。

    • 我使用的是Spring Boot+MongoDB。我需要根据一些条件查询数据库,我的方法如下所示: org.bson.bsonmaximumsizeExprocededException:文档大小46282052大于最大值16793600 有人能帮我做这个吗?

    • 错误: 2月19日-2016 00:00:16.731SEVERE[localhost]org.apache.catalina.core.Applicationontext.logStandard ardWrapper。可投掷org.springframework.beans.factory.BeanCreationException:创建名称为“人员服务”的bean时出错:自动加载依赖项注入失败

    • 我想转换这个mongodb请求的一部分: 使用MongoTemplate(使用spring)中的aggregate方法。 你能帮帮我吗? 谢谢

    • 问题内容: 我需要编写一个应用程序,可以使用spring-data和mongodb进行复杂的查询。我一直从使用MongoRepository开始,但是在复杂的查询中苦苦寻找实例或真正理解语法。 我说的是这样的查询: 或使用基于JSON的查询,但由于语法不正确,因此尝试并尝试了它。即使在阅读了文档之后(由于语法错误,仍无法正常工作的示例)。 阅读完所有文档后,似乎mongoTemplate文档要好得