¡Compártelo!

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

Bruno para simplificar el trabajo con APIs

Cómo utilizar Bruno para simplificar el trabajo con APIs

En el desarrollo de software, la gestión eficaz de las API es imprescindible para garantizar el éxito de los proyectos. Desde la fase de pruebas y documentación hasta la colaboración en equipo, contar con las herramientas adecuadas puede marcar una gran diferencia. Es aquí donde

Qué es una API

Qué es una API y para qué sirve: Funcionamiento y utilidad

El término «API» se ha convertido en parte del vocabulario cotidiano de desarrolladores/as, empresarios/as y usuarios/as de tecnología. Sin embargo, para algunas personas, este concepto sigue siendo un misterio. ¿Qué es realmente una API y por qué es tan importante en el mundo de la

Cómo subir imágenes y archivos usando Multer

Cómo subir imágenes y archivos usando Multer con Node.js y Express

En este post, aprenderemos cómo subir imágenes y archivos usando Multer con Node.js y Express. Desarrollaremos una aplicación básica que permita seleccionar archivos mediante un formulario y guardarlos en una carpeta del servidor. Es necesario instalar Node.js y algún IDE para Javascript, en este caso,