Article updated on

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

img/0/49/table.JPG

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.