¡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

jdk 21

Jdk 21: mejoras en la última versión LTS de Java

Cada 6 meses Java lanza una nueva versión de nuestro lenguaje favorito. Da igual si la estábamos esperando con ganas o si nos pilla por sorpresa, es algo que celebrar dentro de la comunidad. Esta vez la versión 21 incluye diferentes características estables, otras en

openAPI

Explorando OpenApi: estructura, rutas y seguridad

En este artículo, nos adentraremos en la utilización de OpenApi para crear los diferentes endpoints de nuestra aplicación, con sus diferentes objetos de request y response que necesitemos. ¡Vamos allá! ¿Qué es una API? Las API (Interfaz de Programación de Aplicaciones) son piezas de código

Cómo hacer una Regresión Lineal Simple en Machine Learning

Cómo hacer una Regresión Lineal Simple en Machine Learning

En la actualidad, el aprendizaje automático se ha convertido en una de las bases para resolver problemas y como ayuda a la toma de decisiones. En este artículo nos centraremos en el análisis y aplicación práctica de uno de los modelos predictivos más sencillos, el