En este módulo, aprenderemos cómo interactuar con bases de datos utilizando Groovy. Cubriremos desde la configuración inicial hasta la ejecución de consultas y la manipulación de datos. Este conocimiento es esencial para cualquier desarrollador que necesite trabajar con datos persistentes en sus aplicaciones.

Contenido

Configuración del Entorno

Antes de comenzar a trabajar con bases de datos en Groovy, necesitamos configurar nuestro entorno. Asegúrate de tener instalado Groovy y un gestor de bases de datos como MySQL, PostgreSQL o SQLite.

Dependencias

Para interactuar con bases de datos, utilizaremos la biblioteca groovy-sql. Puedes agregar esta dependencia en tu archivo build.gradle si estás utilizando Gradle:

dependencies {
    implementation 'org.codehaus.groovy:groovy-sql:3.0.9'
    implementation 'mysql:mysql-connector-java:8.0.23' // Ejemplo para MySQL
}

Conexión a una Base de Datos

Para conectarnos a una base de datos, necesitamos proporcionar la URL de conexión, el nombre de usuario y la contraseña. Aquí hay un ejemplo de cómo hacerlo en Groovy:

import groovy.sql.Sql

def dbUrl = 'jdbc:mysql://localhost:3306/mi_base_de_datos'
def dbUser = 'usuario'
def dbPassword = 'contraseña'

def sql = Sql.newInstance(dbUrl, dbUser, dbPassword, 'com.mysql.cj.jdbc.Driver')

Explicación del Código

  • dbUrl: La URL de conexión a la base de datos.
  • dbUser: El nombre de usuario para la base de datos.
  • dbPassword: La contraseña para la base de datos.
  • Sql.newInstance: Crea una nueva instancia de Sql que se utilizará para ejecutar consultas.

Ejecutar Consultas SQL

Una vez que estamos conectados a la base de datos, podemos ejecutar consultas SQL. Aquí hay un ejemplo de cómo ejecutar una consulta SELECT:

def query = 'SELECT * FROM usuarios'
sql.eachRow(query) { row ->
    println "ID: ${row.id}, Nombre: ${row.nombre}, Email: ${row.email}"
}

Explicación del Código

  • query: La consulta SQL que queremos ejecutar.
  • sql.eachRow: Ejecuta la consulta y itera sobre cada fila del resultado.
  • row: Representa una fila del resultado de la consulta.

Manipulación de Datos

Podemos insertar, actualizar y eliminar datos utilizando las consultas SQL correspondientes. Aquí hay ejemplos de cada operación:

Insertar Datos

def insertQuery = 'INSERT INTO usuarios (nombre, email) VALUES (?, ?)'
sql.execute(insertQuery, ['Juan Perez', '[email protected]'])

Actualizar Datos

def updateQuery = 'UPDATE usuarios SET email = ? WHERE nombre = ?'
sql.execute(updateQuery, ['[email protected]', 'Juan Perez'])

Eliminar Datos

def deleteQuery = 'DELETE FROM usuarios WHERE nombre = ?'
sql.execute(deleteQuery, ['Juan Perez'])

Explicación del Código

  • sql.execute: Ejecuta una consulta SQL que no devuelve un conjunto de resultados (INSERT, UPDATE, DELETE).
  • Los signos de interrogación (?) en las consultas son marcadores de posición para los parámetros que se pasan como una lista en el segundo argumento de sql.execute.

Ejercicio Práctico

Ejercicio

  1. Conéctate a una base de datos de tu elección.
  2. Crea una tabla llamada productos con las columnas id, nombre y precio.
  3. Inserta al menos tres registros en la tabla productos.
  4. Realiza una consulta SELECT para obtener todos los productos y muéstralos en la consola.
  5. Actualiza el precio de uno de los productos.
  6. Elimina uno de los productos.

Solución

import groovy.sql.Sql

def dbUrl = 'jdbc:mysql://localhost:3306/mi_base_de_datos'
def dbUser = 'usuario'
def dbPassword = 'contraseña'

def sql = Sql.newInstance(dbUrl, dbUser, dbPassword, 'com.mysql.cj.jdbc.Driver')

// Crear tabla
def createTableQuery = '''
CREATE TABLE productos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(255) NOT NULL,
    precio DECIMAL(10, 2) NOT NULL
)
'''
sql.execute(createTableQuery)

// Insertar registros
def insertQuery = 'INSERT INTO productos (nombre, precio) VALUES (?, ?)'
sql.execute(insertQuery, ['Producto A', 10.50])
sql.execute(insertQuery, ['Producto B', 20.75])
sql.execute(insertQuery, ['Producto C', 15.30])

// Consultar registros
def selectQuery = 'SELECT * FROM productos'
sql.eachRow(selectQuery) { row ->
    println "ID: ${row.id}, Nombre: ${row.nombre}, Precio: ${row.precio}"
}

// Actualizar registro
def updateQuery = 'UPDATE productos SET precio = ? WHERE nombre = ?'
sql.execute(updateQuery, [12.00, 'Producto A'])

// Eliminar registro
def deleteQuery = 'DELETE FROM productos WHERE nombre = ?'
sql.execute(deleteQuery, ['Producto B'])

Conclusión

En esta sección, hemos aprendido cómo configurar nuestro entorno para trabajar con bases de datos en Groovy, cómo conectarnos a una base de datos, ejecutar consultas SQL y manipular datos. Estos conocimientos son fundamentales para cualquier desarrollador que necesite trabajar con datos persistentes en sus aplicaciones. En el próximo módulo, exploraremos cómo trabajar con XML y JSON en Groovy.

© Copyright 2024. Todos los derechos reservados