¡Compártelo!
Share on facebook
Share on google
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

Cómo ejecutar una aplicación Spring Boot como un servicio Linux

Cómo ejecutar una aplicación Spring Boot como un servicio Linux

En este post veremos cómo ejecutar una aplicación Spring Boot como un servicio Linux configurado desde un bash con configuración externa. Empaquetado, configuración y construcción del proyecto En primer lugar, explicaremos las opciones de empaquetado, la configuración del proyecto y la construcción de este. Empaquetado

Configurar Verdaccio para tener un registro privado de paquetes npm

Configurar Verdaccio: registro privado de paquetes npm

En este post veremos cómo configurar Verdaccio con una configuración básica de permisos para disponer de un registro privado de paquetes npm. ¿Que es Verdaccio? Verdaccio es una herramienta ligera y de código abierto para disponer de un registro privado de paquetes npm. Siendo compatible

Comparativa codigo de barras vs codigo qr

Código de barras vs. Código QR: diferencias para saber cuál elegir

Un código de barras y un código QR son dos opciones muy interesantes para codificar la información de tus productos o servicios. En este post, te explicamos qué son, para qué sirven y sus principales ventajas, desventajas y diferencias, para que sepas cuál utilizar según