Está en la página 1de 3

Vamos a ver un ejemplo sencillo de cmo usar la capa DAO de Spring Framework.

Nues tro programa de ejemplo smplemente mostrar por pantalla el contenido de una tabla de una base de datos MySQL. Primero necesitamos la base de datos en la que pondremos una tabla e insertaremo s varios registros: mysql> create database prueba; mysql> use prueba; mysql> create table persona (id smallint auto_increment, nombre varchar(60), nac imiento date, primary key(id)); mysql> insert persona values (NULL, 'lili', '1995-09-12'); mydql> insert ... En nuestro proyecto java, necesitaremos los .jar de Spring Framework y el conect or con mysql. Una solucin fcil es usar maven y aadir la dependencia en el fichero p om.xml (ver Proyecto Maven con Spring Framework) Crearemos una clase Persona, con los atributos de los campos en base de datos: " id", "nombre" y "fechaNacimiento". package com.chuidiang.pruebas.spring; import java.text.SimpleDateFormat; import java.util.Date; /** * Bean con los atributos correspondientes a los campos de la tabla de base * de datos. * @author chuidiang */ public class Persona { int id; String nombre; Date fechaNacimiento; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public Date getFechaNacimiento() { return fechaNacimiento; } public void setFechaNacimiento(Date fechaNacimiento) { this.fechaNacimiento = fechaNacimiento; } /** Para poder escribir el bean en pantalla de forma rpida */ public String toString() { return ""+id+" "+nombre+" "+formateador.format(fechaNacimiento); } /** Para escribir las fechas en un formato ms mejor */ private static SimpleDateFormat formateador = new SimpleDateFormat("dd/M M/yyyy"); } En nuestro programa de ejemplo, primero obtenemos el equivalente Spring a una co

nexin con base de datos. Aunque hay muchas formas de hacerlo, incluyendo ficheros de configuracin, vamos a hacer aqu una forma ms inmediata, directamente en cdigo. E l equivalente Spring a la clase Connection es JdbcTemplate. // Datos de conexion con la base de datos DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("org.gjt.mm.mysql.Driver"); dataSource.setUrl("jdbc:mysql://localhost/prueba"); dataSource.setUsername("root"); dataSource.setPassword("la-password"); // La clase Spring con la Connection JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); Una vez que se obtiene la conexin, con el mtodo query() de JdbcTemplate podemos ha cer la consulta. A este mtodo: Le pasamos un String con la sentencia SQL de select. Le pasamos una clase RowMapper encargada de instanciar una clase Persona, leer u na fila del ResultSet resultante y devolver dicha clase Persona. Devuelve una Collection rellena de Persona. El cdigo para esta consulta puede ser como el siguiente // Realizacmos la consulta Collection personas = jdbcTemplate.query( "select id,nombre,nacimiento from persona", new RowMapper() { @Override public Object mapRow(ResultSet rs, int arg1) throws SQLException { // Se rellena un bean Persona a partir de la fila actual // del ResultSet Persona persona = new Persona(); persona.setId(rs.getInt("id")); persona.setNombre(rs.getString("nombre")); persona.setFechaNacimiento(rs.getDate("nacimiento")); return persona; }); y ya smplemente nos quedara escribir en pantalla el contenido de la Collection. El cdigo completo de este pequeo ejemplo puede ser el siguiente package com.chuidiang.pruebas.spring; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Collection; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.datasource.DriverManagerDataSource; /** * Pequeo ejemplo de uso de acceso a base de datos con Spring DAO * * @author chuidiang */ public class PruebaSpringDAO { /** * Consulta una tabla de base de datos y escribe en pantalla los registros * ledos. * * @param args */ public static void main(String[] args) { // Datos de conexion con la base de datos DriverManagerDataSource dataSource = new DriverManagerDataSource();

dataSource.setDriverClassName("org.gjt.mm.mysql.Driver"); dataSource.setUrl("jdbc:mysql://localhost/prueba"); dataSource.setUsername("root"); dataSource.setPassword("la-password"); // La clase Spring con la Connection JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); // Realizacmos la consulta Collection personas = jdbcTemplate.query( "select id,nombre,nacimiento from persona", new RowMapper() { @Override public Object mapRow(ResultSet rs, int arg1) throws SQLException { // Se rellena un bean Persona a partir de la fila actual // del ResultSet Persona persona = new Persona(); persona.setId(rs.getInt("id")); persona.setNombre(rs.getString("nombre")); persona.setFechaNacimiento(rs.getDate("nacimiento")); return persona; } }); // Escribimos en pantalla los datos leidos for (Object persona : personas) { System.out.println(persona.toString()); } } }

También podría gustarte