Consultas SQL con JDBC Template en Spring Boot

Clase 6 de 25Curso 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)
        );
    }
}
  1. Definición del Servicio: Utilizamos la anotación @Service para marcar nuestra clase como un servicio dentro del ciclo de vida de Spring.
  2. Uso de JdbcTemplate: Declaramos e inyectamos JdbcTemplate para manejar las consultas SQL.
  3. Método de Consulta: Creamos un método getAll que usa una consulta SQL para recuperar todas las entradas de la tabla pizza y mapearlas a objetos PizzaEntity.

¿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());
    }
}
  1. Definición del Controlador: Utilizamos @RestController para definir un controlador REST que maneja solicitudes HTTP.
  2. Configuración del Ruteo: Con @RequestMapping establecemos /api/pizzas como el path para el API.
  3. 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)
    );
}
  1. Consulta Condicional: Filtramos las pizzas añadiendo la condición WHERE available = 0.
  2. 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.