带有 MongoTemplate 的 Spring Boot
Posted
技术标签:
【中文标题】带有 MongoTemplate 的 Spring Boot【英文标题】:Spring Boot with MongoTemplate 【发布时间】:2016-11-12 07:08:44 【问题描述】:我是 Spring Boot 和 MongoDb 的新手。 使用 Mongo Repositories 和 Spring Boot 尝试一些示例。 但是在浏览了一些文档后发现 Mongo Template 会是一个更好的选择。无法使用 Mongo 模板示例获得正确的 Spring Boot。
谁能帮我举个同样的例子。
在尝试使用 Mongo 模板时,我们是否需要创建用户定义的存储库接口并扩展存储库或 CRUD 存储库?
【问题讨论】:
您找到解决方案了吗?我们可以在同一个项目中同时使用模板和存储库吗?假设我想实现一个自定义存储库,我可以使用模板吗? 【参考方案1】:为了进一步解释,您甚至可以同时使用两者。
MongoRepository
只是一个抽象层,类似于MongoTemplate
,但接口更简单。
如果你发现使用 Spring query-creation 做某种操作过于复杂,并且不知何故不想使用 @Query
(例如,你在构造查询时需要 IDE 类型提示),你可以扩展 @ 987654326@,使用MongoTemplate
作为查询机制。
首先,我们使用自定义接口扩展我们的存储库。
@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);
最后,我们使用ArticleRepository
。
@Service
public class ArticleServiceImpl
@Autowired
private ArticleRepository articleRepository;
public List<Article> getArticleByPage()
return articleRepository.getArticleFilteredByPage(1, 10);
【讨论】:
【参考方案2】:我找到了一些使用 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>
application.properties
#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=
SpringBoot 类
@SpringBootApplication
@EnableAutoConfiguration(exclude = DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class )
public class UserApp
Mongo 存储库
@Repository
public interface UserRepository extends MongoRepository<User, Long>
【讨论】:
嗨 Sarvanna,我的问题是当我们使用 Mongo 模板时是否需要创建一个 Repository 类?据我所知,Mongo Template 和 Mongo Repository 是两个不同的实体。 您不需要同时创建两者,模板基本上是连接工厂的包装器,提供基本的 CRUD 操作 我发布的链接是使用模板,但如果你想使用 JPA,你可以看到我发布的代码以上是关于带有 MongoTemplate 的 Spring Boot的主要内容,如果未能解决你的问题,请参考以下文章
没有名为“mongoTemplate”的 bean 可用。 Spring Boot + MongoDB
spring-data-mongo的MongoTemplate开发
Mongotemplate聚合java spring GroupBy