If you have an SQL statement like the following, which you don't necessarily need to retrieve into a Java Bean, you can use MyBatis' resultType="hashmap" attribute on your select statement.
The MyBatis documentation says the following:
"Such a statement simply results in all columns being automatically mapped to the keys of a HashMap, as specified by the resultType attribute."
What this actually means is for each row that is returned by your SQL statement, a HashMap will be created which will store the column name and the associated value of the field.
To illustrate
If you have the following table called cars
| car_id | car_make | car_model | car_color |
|---|---|---|---|
| 22 | Nissan | Altima | Blue |
| 40 | Jaguar | X6 | Green |
| 61 | BMW | 328i | Black |
| 81 | Audi | R8 | Silver |
And your mapper file contain this SQL statement:
<select id="selectCars" resultType="hashmap"> select car_id, car_model, car_color from cars order by car_id </sql>
When you run the following code:
ArrayList<HashMap<String,Object>> results = (ArrayList<HashMap<String,Object>>)session.selectList("com.yourproject.package.TestMappers.sqlStatementX");
/**
loop through each row returned
each key will be the column_name
each value will be the field value for that row and column
*/
for(HashMap<String,Object> row : results){
log.info("car id: " + row.get("car_id"));
log.info("car model: " + row.get("car_model"));
log.info("car color: " + row.get("car_color"));
}
You would get following output
| 22 | Altima | Blue |
| 40 | X6 | Green |
| 61 | 328i | Black |
| 81 | R8 | Silver |