¡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

Frameworks Python

Los 4 mejores frameworks para Python

En este artículo recopilamos los mejores frameworks para Python. Repasamos los entornos de trabajo más utilizados para programar en este lenguaje y te ayudamos a saber cómo y por qué decantarte por uno u otro. ¡Sigue leyendo! ¿Qué es un framework y para qué sirve?

Lenguajes de programación para videojuegos

Los 6 mejores lenguajes de programación para videojuegos

El lenguaje con el que están programados los videojuegos es un elemento fundamental para garantizar una experiencia de juego fluida. Parece que cuando jugamos a un videojuego solo nos fijamos en la parte visual, en su estética, porque es lo más espectacular, pero detrás de

Variables y tipos de datos en Java

Variables y tipos de datos en Java: qué son y cómo funcionan

En este articulo, nos vamos a centrar en entender mejor qué son, cómo funcionan y para qué sirven las variables en Java, además de explicar qué tipos de datos tenemos en este lenguaje de programación (primitivos y no primitivos) y muchas más cosas. ¿Qué es