dbutils 别名问题,dbutils MapHandler、MapListHandler 别名解决办法.
最近在赶一个项目,刚好用了apache 的 dbuils 做持久层(hibernate太笨重了) ,这个dbutisl比较轻便。在使用过程中用到了多表查询数据,返回的数据是一个map,发现了dbutisl 的一个不太合理的地方(也不能算是bug),就是多表查询返回map时MapListHandler 不能使用别名,只要是设计别名的都查询不到数据,而通过工具单独运行sql查询结果是没问题的,查看了 dbutisl 的源码发现了原因:BasicRowProcessor 类的 tomap 方法不合适得改改。见截图;
即:将 result.put(rsmd.getColumnName(i), rs.getObject(i));
改为:result.put(rsmd.getColumnLabel(i), rs.getObject(i));
就可以使用别名了。
同时上传了我改后的jar文件,我是在jdk1.5的环境编译的jar
备注:我用的dbutils 的版本是 1.4(最新)