He aquí el código
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
*@author Codemonkey Junior Blogspot | |
*@description Usode JDBI en Groovy | |
*/ | |
//importamos la librería JDBI con @Grapes, @Grab | |
@Grapes( | |
@Grab(group='org.jdbi', module='jdbi', version='2.77') | |
) | |
//importamos y cargamos el conector MySQL | |
@GrabConfig(systemClassLoader=true) | |
@Grab(group='mysql', module='mysql-connector-java', version='5.1.6') | |
import java.sql.ResultSet; | |
import java.sql.SQLException; | |
import org.skife.jdbi.v2.sqlobject.Bind; | |
import org.skife.jdbi.v2.sqlobject.SqlQuery; | |
import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper; | |
import org.skife.jdbi.v2.DBI; | |
import org.skife.jdbi.v2.Handle; | |
import org.skife.jdbi.v2.tweak.*; | |
import org.skife.jdbi.v2.*; | |
//Clase principal del programa | |
class JDBIGroovy{ | |
static main(args) { | |
println "Iniciando ..." | |
DBI dbi = new DBI("jdbc:mysql://localhost:3306/test", | |
"root", | |
"5432"); | |
println "Abriendo conexion ..." | |
Handle h = dbi.open(); | |
println "Abierto ..." | |
if(!dbi.open().isInTransaction()){ | |
println "No esta realizando alguna transaccion"; | |
} | |
PersonajeDAO pers=null; | |
try{ | |
pers=dbi.open(PersonajeDAO.class); | |
if(pers.verTodo().size() > 0){ | |
println "Lista de persona llena!!: "+pers.verTodo().size(); | |
println " "+pers.verTodo().toString() != "[null, null, null]" ? "llena" : "vacia"; | |
//Mostramos todos los resultados | |
for(int i=0 ; i < pers.verTodo().size(); i++){ | |
println "id:"+pers.verTodo().get(i).personaje_id; | |
println "nombre:"+pers.verTodo().get(i).nombre; | |
println "apellido paterno:"+pers.verTodo().get(i).apellidos; | |
println "apellido materno:"+pers.verTodo().get(i).biografia; | |
} | |
} | |
}catch(Exception ex){ | |
println "Error: "+ex.toString() | |
//ex.printStackTrace(); | |
}finally{ | |
pers.close(); | |
} | |
h.close(); | |
} | |
} | |
//Podemos seguir programando al estilo Java, pero también se puede hacer al estilo Groovy | |
//Esta es la clase que representa a la tabla personaje | |
class ModeloPersonaje implements java.io.Serializable{ | |
private static final long serialVersionUID=1L; | |
private int personaje_id; | |
private String nombre; | |
private String apellidos; | |
private String biografia; | |
public ModeloPersonaje(){} | |
public void setPersonaje_Id(int personaje_id){ | |
this.personaje_id=personaje_id; | |
} | |
public int getPersonaje_Id(){ | |
return personaje_id; | |
} | |
public void setNombre(String nombre){ | |
this.nombre=nombre; | |
} | |
public String getNombre(){ | |
return nombre; | |
} | |
public void setApellidos(String apellidos){ | |
this.apellidos=apellidos; | |
} | |
public String getApellidos(){ | |
return apellidos; | |
} | |
public void setBiografia(String biografia){ | |
this.biografia=biografia; | |
} | |
public String getBiografia(){ | |
return biografia; | |
} | |
} | |
//Aquí seteamos los valores obtenidos en la consulta | |
class ModeloPersonajeMapper implements ResultSetMapper<ModeloPersonaje> { | |
@Override | |
public ModeloPersonaje map(int arg0, ResultSet r, StatementContext arg2) throws SQLException { | |
ModeloPersonaje mpersonaje=new ModeloPersonaje(); | |
mpersonaje.setPersonaje_Id(r.getInt("personaje_id")); | |
mpersonaje.setNombre(r.getString("nombre")); | |
mpersonaje.setApellidos(r.getString("apellidos")); | |
mpersonaje.setBiografia(r.getString("biografia")); | |
return mpersonaje; | |
} | |
} | |
//Esta clase es donde se ejecutan las consultas SQL | |
@RegisterMapper(ModeloPersonajeMapper.class) | |
public interface PersonajeDAO { | |
@SqlQuery("SELECT test.personaje.personaje_id, test.personaje.nombre, test.personaje.apellidos, test.personaje.biografia FROM test.personaje WHERE test.personaje.personaje_id = :id") | |
ModeloPersonaje findById(@Bind("personaje_id") id); | |
@SqlQuery("SELECT test.personaje.personaje_id, test.personaje.nombre, test.personaje.apellidos, test.personaje.biografia FROM test.personaje") | |
List<ModeloPersonaje> verTodo(); | |
void close(); | |
} |