Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带MongoTemplate的弹簧靴_Java_Mongodb_Spring Boot_Mongotemplate_Mongorepository - Fatal编程技术网

Java 带MongoTemplate的弹簧靴

Java 带MongoTemplate的弹簧靴,java,mongodb,spring-boot,mongotemplate,mongorepository,Java,Mongodb,Spring Boot,Mongotemplate,Mongorepository,我不熟悉Spring Boot和MongoDb。 尝试使用Mongo存储库和Spring Boot的一些示例。 但在浏览了一些文档后发现,Mongo模板将是一个更好的选择。无法使用Mongo模板示例获得正确的Spring引导 有人能帮我举个例子吗 在尝试Mongo模板时,是否需要创建用户定义的存储库界面并扩展存储库或CRUD存储库 我发现了一些使用Mongo模板的示例 如果您对使用JPA感兴趣,请参见下文 <dependency> <groupId>org.s

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

  • 有人能帮我举个例子吗

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


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

    如果您对使用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>
    
    SpringBoot类

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

    @Repository
    public interface UserRepository extends MongoRepository<User, Long> {}
    
    @存储库
    公共接口UserRepository扩展了MongoRepository{}
    
    为了进一步解释,您甚至可以同时使用两者

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

    如果您发现使用Spring执行某种操作太复杂,并且不想使用(例如,在构造查询时需要IDE类型提示),那么可以扩展
    MongoRepository
    并使用
    MongoTemplate
    作为查询机制

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

    @Repository
    public interface ArticleRepository extends MongoRepository<Article, String>, CustomArticleRepository {
    }
    
    public interface CustomArticleRepository {
        List<Article> getArticleFilteredByPage(int page, int num);
    }
    
    最后,我们使用
    文章库

    @Service
    public class ArticleServiceImpl {
    
        @Autowired
        private ArticleRepository articleRepository;
    
        public List<Article> getArticleByPage() {
            return articleRepository.getArticleFilteredByPage(1, 10);
        }
    }
    
    @服务
    公共类ArticleServiceImpl{
    @自动连线
    私人物品储存库;
    公共列表getArticleByPage(){
    返回articleRepository.getArticleFilteredByPage(1,10);
    }
    }
    
    Hi Sarvanna,我的问题是在使用Mongo模板时是否需要创建存储库类?据我所知,Mongo Template和Mongo Repository是两个不同的实体。你不需要同时创建它们,模板基本上是连接工厂的包装器,提供基本的CRUD操作。我发布的链接是用于使用模板的,但是如果你想使用JPA,你可以看到我发布的代码。你找到解决方案了吗?我们可以在同一个项目中同时使用模板和存储库吗?假设如果我想实现一个自定义存储库,我可以使用模板来实现吗?
    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);
        }
    }