web-dev-qa-db-fra.com

Spring Boot avec MongoTemplate

Je suis nouveau sur Spring Boot et MongoDb. Essayer quelques exemples avec Mongo Repositories et Spring Boot. Mais après avoir parcouru certains documents, le modèle Mongo sera une meilleure option. Impossible d'obtenir un Spring Boot approprié avec l'exemple de modèle Mongo.

  1. Quelqu'un peut-il m'aider s'il vous plaît avec un exemple pour la même chose.

  2. Avons-nous besoin de créer une interface de référentiels définis par l'utilisateur et d'étendre les référentiels ou le référentiel CRUD, tout en essayant pour le modèle Mongo?

10
umesh

J'ai trouvé quelques exemples utilisant le modèle 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/

Si vous êtes intéressé à utiliser JPA, veuillez voir ci-dessous

<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=

Classe SpringBoot

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

Dépôt Mongo

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

Pour plus d'explications, vous pouvez même utiliser les deux en même temps.

MongoRepository n'est qu'une couche d'abstraction, comme MongoTemplate, mais avec une interface plus simple.

Si vous avez trouvé que faire une sorte d'opération est trop compliqué avec Spring query-creation , et ne veut pas utiliser @Query (par exemple, vous voulez IDE type hint lors de la construction des requêtes), vous pouvez étendre le MongoRepository et utiliser MongoTemplate comme mécanisme de requête .

Nous étendons d'abord notre référentiel avec notre interface personnalisée.

@Repository
public interface ArticleRepository extends MongoRepository<Article, String>, CustomArticleRepository {
}

Déclarez ensuite l'interface.

public interface CustomArticleRepository {
    List<Article> getArticleFilteredByPage(int page, int num);
}

Et puis implémentez notre référentiel personnalisé. Nous pouvons câbler automatiquement le MongoTemplate ici et l'utiliser pour interroger la base de données.

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);
    }
}

Enfin, nous utilisons le ArticleRepository.

@Service
public class ArticleServiceImpl {

    @Autowired
    private ArticleRepository articleRepository;

    public List<Article> getArticleByPage() {
        return articleRepository.getArticleFilteredByPage(1, 10);
    }
}
2