Como pasar los valores de un Resulset a un Bean con BeanProcesor
BeanProcesor es una API de Apache que ayuda a poblar los valores de un resulset a un bean. Ahora todo el trabajo de pasar campo a campo cada uno de los valores.
Bean procesor no discrimina entre mayúsculas y minúsculas.
La Tabla contiene
Java Ejemplo
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import org.apache.commons.dbutils.BeanProcessor; public class TestBeanProcessor { public static void main(String[] args) { Connection conn = null; try { //connection String userName = "root"; String password = "mypassword"; String url = "jdbc:mysql://localhost:3306"; Class.forName("com.mysql.jdbc.Driver").newInstance(); conn = DriverManager.getConnection(url, userName, password); PreparedStatement ps1; conn.setAutoCommit(true); //query ps1 = conn.prepareStatement("SELECT * FROM TEST"); ResultSet rs = ps1.executeQuery(); //bean procesor BeanProcessor bp = new BeanProcessor(); ArrayList<MyBean> list = new ArrayList<MyBean>(); while (rs.next()) { list.add((MyBean) bp.toBean(rs, MyBean.class)); } rs.close(); ps1.close(); //result for(MyBean mb : list){ System.out.println(mb.getId()+ " "+mb.getTest()); } } catch (Exception e) { e.printStackTrace(); } finally { if (conn != null) { try { conn.close(); } catch (Exception e) { e.printStackTrace(); } } } } }
Bean
public class MyBean { private String id; private String test; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getTest() { return test; } public void setTest(String test) { this.test = test; } }
Maven
<dependency> <groupId>commons-dbutils</groupId> <artifactId>commons-dbutils</artifactId> <version>1.1</version> </dependency>
Notas
- Bean processor no acepta alias, si dos columnas tienen el mismo nombre tendrás que sobreescribir el valor de al menos una de ellas una por una.
- Para usar una herramienta de mapeo más avanzada puedes usar otras librerías como resultsetmapper o frameworks como hibernate.