¡Compártelo!
Share on facebook
Share on twitter
Share on linkedin

Usando Querydsl en Spring Data MongoDB

Spring Data nos ofrece distintas formas de ejecutar sentencias contra nuestra base de datos:

  • Mediante nombre de función en la interfaz de repositorio.
  • Uso de @Query
  • MongoOperations
  • Criteria
  • Usando la sintaxis tal cual de la mongo shell
  • Query By Example

En este post nos vamos a centrar en la extensión Querydsl ampliando el código de la receta básica de Pivotal para MongoDB «Accessing Data with MongoDB»

1: pom.xml

Añadimos dependencia y configuramos plugin para generar las clases Q* (apt.version vale 1.1.3):

		<dependency>
			<groupId>com.querydsl</groupId>
			<artifactId>querydsl-mongodb</artifactId>
			<exclusions>
				<exclusion>
					<groupId>org.mongodb</groupId>
					<artifactId>mongo-java-driver</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
        ...
			<plugin>
				<groupId>com.mysema.maven</groupId>
				<artifactId>apt-maven-plugin</artifactId>
				<version>${apt.version}</version>
				<dependencies>
					<dependency>
						<groupId>com.querydsl</groupId>
						<artifactId>querydsl-apt</artifactId>
						<version>${querydsl.version}</version>
					</dependency>
				</dependencies>
				<executions>
					<execution>
						<phase>generate-sources</phase>
						<goals>
							<goal>process</goal>
						</goals>
						<configuration>
							<outputDirectory>target/generated-sources/annotations</outputDirectory>
							<processor>org.springframework.data.mongodb.repository.support.MongoAnnotationProcessor</processor>
							<logOnlyOnError>true</logOnlyOnError>
						</configuration>
					</execution>
				</executions>
			</plugin>

2: Documento

Anotamos la clase Customer con @Document

3: Repositorio

Hacemos que la interfaz CustomerRepository herede también de QueryDslPredicateExecutor<Customer>

4: Uso de Querydsl

// fetch an individual customer
System.out.println("Customer found with findByFirstName('Alice') with querydsl:");
System.out.println("--------------------------------");
QCustomer qCustomer = QCustomer.customer;
Predicate predicate = qCustomer.firstName.eq("Alice");
System.out.println(repository.findAll(predicate));
System.out.println();

 
Todo el código fuente está disponible en: https://github.com/venosov/gs-accessing-data-mongodb/commit/770df5f70853e9fe14bf4ada9c3c31eb5d4a4c8f
 

Artículos relacionados

Que es TypeScript

TypeScript: qué es, diferencias con JavaScript y por qué aprenderlo

Si te dedicas al desarrollo Front-End o al desarrollo de software en general, seguramente hayas oído hablar de TypeScript, o incluso lo utilizas en tu día a día. Pero a los que simplemente tienen curiosidad por el mundo de la programación, a lo mejor, no

Mejores frameworks de Java en 2021

Los mejores frameworks de Java en 2021 para desarrollo web

En este artículo vamos a diseccionar los mejores frameworks de Java en 2021, aquellos marcos de trabajo imprescindibles para desarrollar aplicaciones web con Java en la actualidad. Java es uno de los lenguajes de programación más utilizados por los desarrolladores hoy en día y uno

qué es Gherkin

Qué es Gherkin: cómo usarlo y cuáles son sus elementos

En este post explicamos qué es Gherkin, un lenguaje DSL (lenguaje de dominio específico) muy cercano al lenguaje natural. Repasamos cómo usarlo y cuáles son sus elementos. Comprendiendo el marco dónde se aplica Gherkin: del TDD al BDD Igual que una planta crece hacia el