使用MongoTemplate进行Spring启动

ume*_*esh 10 java mongodb mongorepository spring-boot mongotemplate

我是Spring Boot和MongoDb的新手.尝试使用Mongo Repositories和Spring Boot的一些示例.但经过一些文件发现,Mongo Template将是一个更好的选择.无法使用Mongo Template示例获得正确的Spring Boot.

  1. 有人可以帮我一个例子.

  2. 在尝试使用Mongo模板时,是否需要创建用户定义的存储库接口并扩展存储库或CRUD存储库?

Adh*_*ita 6

为了进一步解释,您甚至可以同时使用两者。

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

如果您发现使用 Spring query-creation做某种操作太复杂,并且不知何故不想使用@Query(例如,您在构造查询时需要 IDE 类型提示),您可以扩展MongoRepositoryMongoTemplate用作查询机制。

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

@Repository
public interface ArticleRepository extends MongoRepository<Article, String>, CustomArticleRepository {
}
Run Code Online (Sandbox Code Playgroud)

然后声明接口。

public interface CustomArticleRepository {
    List<Article> getArticleFilteredByPage(int page, int num);
}
Run Code Online (Sandbox Code Playgroud)

然后实现我们的自定义存储库。我们可以在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);
    }
}
Run Code Online (Sandbox Code Playgroud)

最后,我们使用ArticleRepository.

@Service
public class ArticleServiceImpl {

    @Autowired
    private ArticleRepository articleRepository;

    public List<Article> getArticleByPage() {
        return articleRepository.getArticleFilteredByPage(1, 10);
    }
}
Run Code Online (Sandbox Code Playgroud)


Sar*_*ana 4

我找到了一些使用 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>
Run Code Online (Sandbox Code Playgroud)

应用程序属性

#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=
Run Code Online (Sandbox Code Playgroud)

SpringBoot类

@SpringBootApplication
@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class })
public class UserApp {
Run Code Online (Sandbox Code Playgroud)

蒙戈存储库

@Repository
public interface UserRepository extends MongoRepository<User, Long> {}
Run Code Online (Sandbox Code Playgroud)