Весенняя загрузка с MongoTemplate

Я новичок в Spring Boot и MongoDb. Пробуем несколько примеров с репозиториями Mongo и Spring Boot. Но после просмотра некоторых документов выяснилось, что Mongo Template - лучший вариант. Невозможно получить правильную загрузку Spring с примером шаблона Mongo.

  1. Может ли кто-нибудь помочь мне с примером для того же самого.

  2. Нужно ли нам создавать интерфейс пользовательских репозиториев и расширять репозитории или репозиторий CRUD при попытке использовать шаблон Mongo?


person umesh    schedule 10.07.2016    source источник
comment
Вы нашли какое-нибудь решение для этого? можем ли мы использовать и шаблон, и репозитории вместе в одном проекте? скажем, если я хочу реализовать собственный репозиторий, могу ли я использовать для этого шаблон?   -  person Gauranga    schedule 16.07.2017


Ответы (2)


Для дальнейшего объяснения, вы даже можете использовать оба одновременно.

MongoRepository - это просто уровень абстракции, как MongoTemplate, но с более простым интерфейсом.

Если вы обнаружили, что выполнение какой-либо операции с помощью Spring слишком сложно query-creation, и почему-то не хочет использовать _ 3_ (например, вам нужна подсказка типа IDE при построении запросов), вы можете расширить MongoRepository и использовать 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);
    }
}
person Adhika Setya Pramudita    schedule 26.06.2019

Я нашел несколько примеров с использованием шаблона 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> {}
person Saravana    schedule 10.07.2016
comment
Привет, Сарванна, у меня вопрос: нужно ли нам создавать класс репозитория, когда мы работаем с шаблоном Mongo? Насколько я читал, Mongo Template и Mongo Repository - это две разные сущности. - person umesh; 11.07.2016
comment
Вам не нужно создавать оба, шаблон будет в основном оболочкой над фабрикой соединений, обеспечивающей основные операции CRUD. - person Saravana; 11.07.2016
comment
Ссылки, которые я разместил, предназначены для использования шаблона, но если вы хотите использовать JPA, вы можете увидеть опубликованный мной код. - person Saravana; 11.07.2016