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(最新)
DbUtils别名问题解决
本文解决了DbUtils在多表查询返回Map时无法使用别名的问题。通过修改BasicRowProcessor类的toMap方法,将result.put(rsmd.getColumnName(i), rs.getObject(i))改为result.put(rsmd.getColumnLabel(i), rs.getObject(i)),实现别名支持。
304

被折叠的 条评论
为什么被折叠?



