Spring Загрузка с помощью MongoTemplate

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

  • Может кто-то, пожалуйста, помогите мне с примером для этого.

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

Ответ 1

Я нашел несколько примеров с использованием шаблона 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 {

Монгонский репозиторий

@Repository
public interface UserRepository extends MongoRepository<User, Long> {}

Ответ 2

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

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

Если вы обнаружили, что выполнение какой-либо операции слишком сложно в Spring -создании запросов и почему-то не хочет использовать @Query (например, вам нужна подсказка типа 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);
    }
}