Cuando se utiliza iBatis o MyBatis, como se llama actualmente el paquete, muchas veces resulta tedioso tener que crear clases que incluyan como atributos todos lo campos a recuperar de una query, para evitarlo hay una alternativa muy sencilla, que puede resultar un poco complicado encontrar.

La alternativa es crear un java.util.HashMap como resultClass y ejecutar la query con un queryForList. A continuación incluyo un ejemplo lo más sencillo y claro posible.
[pastacode provider=»manual» lang=»markup»]
[/pastacode]
No es necesario que los nombres de las property coincidan con los nombres de las column.
[pastacode provider=»manual» lang=»sql»]
[/pastacode]
Los nombres que se utilizan al definir las columnas del resultMap, tienen que coincidir con el resultado de la ejecución de la query.
[pastacode provider=»manual» lang=»java»]
List data = (List)sqlMap.queryForList("nombre-de-la-query", id);
for( HashMap temp : data){
System.out.println((String)temp.get("VAL1"));
System.out.println((String)temp.get("VAL2"));
System.out.println((String)temp.get("VAL3"));
}
[/pastacode]
Para acceder a las propiedades, utilizaremos el nombre definido en el resultMap como property.
Esta manera de recuperar información con iBatis nos permite realizar consultas complejas y utilizar objetos preexistentes para guardar o utilizar la información; aunque nos libera de la necesidad de crear las clases con los objetos ad-hoc para cada una de las consultas, lo que puede agilizar sensiblemente la construcción de las consultas.