Consultas SQL con JDBC Template en Spring Boot
Clase 6 de 25 • Curso de Java Spring Data JPA: Bases de Datos
Resumen
¿Cómo empezar a trabajar con la información de la base de datos?
Para comenzar a gestionar la información almacenada en una base de datos, es fundamental tener una comprensión clara de cómo los datos están estructurados y cómo se pueden consultar eficientemente. El uso de herramientas adecuadas facilita la carga y consulta de datos de manera ordenada. En esta sesión, trabajaremos con consultas SQL a través de JDBC Template
en un entorno Java, lo que nos permitirá explorar y manipular nuestra base de datos de manera efectiva.
¿Cómo realizar consultas con JDBC Template?
El JDBC Template
es una poderosa herramienta que permite realizar consultas SQL y mapear los resultados a clases Java. Este enfoque nos brinda flexibilidad y control sobre las interacciones con la base de datos. A continuación, mostramos cómo crear un método para consultar todas las pizzas en nuestra pizzería.
@Service
public class PizzaService {
private final JdbcTemplate jdbcTemplate;
@Autowired
public PizzaService(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public List<PizzaEntity> getAll() {
return this.jdbcTemplate.query(
"SELECT * FROM pizza",
new BeanPropertyRowMapper<>(PizzaEntity.class)
);
}
}
- Definición del Servicio: Utilizamos la anotación
@Service
para marcar nuestra clase como un servicio dentro del ciclo de vida de Spring. - Uso de JdbcTemplate: Declaramos e inyectamos
JdbcTemplate
para manejar las consultas SQL. - Método de Consulta: Creamos un método
getAll
que usa una consulta SQL para recuperar todas las entradas de la tablapizza
y mapearlas a objetosPizzaEntity
.
¿Cómo exponer consultas a través de un controlador REST?
Para hacer las consultas accesibles a través de un API RESTful, necesitamos un controlador que gestione las solicitudes HTTP. Aquí explicamos cómo exponer las pizzas a través de un endpoint REST.
@RestController
@RequestMapping("/api/pizzas")
public class PizzaController {
private final PizzaService pizzaService;
@Autowired
public PizzaController(PizzaService pizzaService) {
this.pizzaService = pizzaService;
}
@GetMapping
public ResponseEntity<List<PizzaEntity>> getAll() {
return ResponseEntity.ok(this.pizzaService.getAll());
}
}
- Definición del Controlador: Utilizamos
@RestController
para definir un controlador REST que maneja solicitudes HTTP. - Configuración del Ruteo: Con
@RequestMapping
establecemos/api/pizzas
como el path para el API. - Método Get: Usamos
@GetMapping
para especificar que este método responderá a solicitudes GET, devolviendo una lista de pizzas.
Ahora, al enviar una petición GET a http://localhost:8080/api/pizzas
, podremos obtener un listado de todas las pizzas disponibles en la base de datos.
¿Cómo realizar consultas filtradas?
Si queremos obtener un subconjunto específico de datos, podemos modificar nuestra consulta SQL añadiendo condiciones WHERE
. Por ejemplo, para recuperar solo las pizzas que no están disponibles:
public List<PizzaEntity> getUnavailablePizzas() {
return this.jdbcTemplate.query(
"SELECT * FROM pizza WHERE available = 0",
new BeanPropertyRowMapper<>(PizzaEntity.class)
);
}
- Consulta Condicional: Filtramos las pizzas añadiendo la condición
WHERE available = 0
. - Modificación del Método: Creamos un nuevo método
getUnavailablePizzas
para encapsular esta lógica y facilitar su reutilización.
Pruebas con herramientas como Postman
Una vez configurado el servicio y el controlador, es esencial probar nuestras consultas y el API RESTful. Utilizamos herramientas como Postman para enviar solicitudes y verificar respuestas. También se pueden realizar cambios dinámicos en las consultas y probar los resultados inmediatamente después.
Este enfoque nos permite mantener un flujo efectivo de desarrollo y pruebas, asegurando que las consultas funcionen según lo esperado en un entorno real.
Con estas técnicas y herramientas, ahora estás listo para realizar consultas básicas y avanzadas a tu base de datos usando Java y Spring. Continúa explorando y experimentando con consultas para mejorar tu conocimiento y habilidades en el desarrollo de aplicaciones.