`

dbutils 别名问题,dbutils MapHandler、MapListHandler 别名解决办法

阅读更多

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(最新)

  • 大小: 75.8 KB
分享到:
评论
4 楼 zhangpeili 2014-06-12  
zhangpeili 写道
    	try {
    		Connection connection = DatabaseConnectionPool.getConnection();
    		String sql = "select UPLOAD_FILE_ID as upload from nbu_upload_file where rownum<5";
    		System.out.println(sql);
    		PreparedStatement ps = connection.prepareStatement(sql);
    		ResultSet rs = ps.executeQuery();
    		ResultSetMetaData rsmd = rs.getMetaData();
    		int count = rsmd.getColumnCount();
    		if(rs.next()){
    			for (int i = 1; i <= count; i++) {
    				System.out.print(rsmd.getColumnName(i)+":"+rs.getObject(i)+"------");
    			}
    			System.out.println();
    		}
		} catch (SQLException e) {
			e.printStackTrace();
		}


UPLOAD:CEEB382379644000E04400144F674217------


返回的就是别名哦
3 楼 zhangpeili 2014-06-12  
    	try {
    		Connection connection = DatabaseConnectionPool.getConnection();
    		String sql = "select UPLOAD_FILE_ID as upload from nbu_upload_file where rownum<5";
    		System.out.println(sql);
    		PreparedStatement ps = connection.prepareStatement(sql);
    		ResultSet rs = ps.executeQuery();
    		ResultSetMetaData rsmd = rs.getMetaData();
    		int count = rsmd.getColumnCount();
    		if(rs.next()){
    			for (int i = 1; i <= count; i++) {
    				System.out.print(rsmd.getColumnName(i)+":"+rs.getObject(i)+"------");
    			}
    			System.out.println();
    		}
		} catch (SQLException e) {
			e.printStackTrace();
		}


UPLOAD:CEEB382379644000E04400144F674217------
2 楼 haiyangyiba 2013-04-23  
BeanProcessor.class下面有此下判断,楼主是否应该验证下,当我的sql中没有存在别名的情况呢?
 String columnName = rsmd.getColumnLabel(col);
 if (null == columnName || 0 == columnName.length()) {
     columnName = rsmd.getColumnName(col);
 }
1 楼 haiyangyiba 2013-04-23  
我也是dbutils-1.4的版本,遇到这个问题了,同样问题,支持下楼主

相关推荐

    dbUtils常用结果集BeanHandler、BeanListHandler、MapHandler、MapListHandler转Json串

    【dbUtils常用结果集[BeanHandler]、[BeanListHandler]、[MapHandler]、[MapListHandler,Object&gt;]查询结果转Json串】

    dbutils dbutils dbutils dbutils

    dbutils dbutils dbutils dbutils

    Dbutils项目实例

    MapHandler :将ResultSet中第一行的数据存成Map映射 MapListHandler :将ResultSet中所有的数据存成List List中存放的是Map ScalarHandler :将ResultSet中一条记录的其中某一列的数据存成Object org apache ...

    Commons-dbutils1.7 jar包.rar

    commons-dbutils包是Apache...MapHandler :将ResultSet中第一行的数据存成Map MapListHandler :将ResultSet中所有的数据存成List&lt;Map,Object&gt;&gt; ScalarHandler :将ResultSet中一条记录的其中某一列的数据存成Object

    python类DBUtils安装包

    DBUtils 是一套允许线程化 Python 程序可以安全和有效的访问数据库的模块。DBUtils已经作为 Webware for Python 一部分用来结合 PyGreSQL 访问 PostgreSQL 数据库,当然他也可以用在其他Python应用程序中来访问 DB-...

    commons-dbutils-1.7-API文档-中文版.zip

    赠送jar包:commons-dbutils-1.7.jar; 赠送原API文档:commons-dbutils-1.7-javadoc.jar; 赠送源代码:commons-dbutils-1.7-sources.jar; 赠送Maven依赖信息文件:commons-dbutils-1.7.pom; 包含翻译后的API文档...

    模仿DBUtils(自己模仿DBUtils写的简易DBUtils)

    模仿DBUtils(自己模仿Commons DBUtils写的简易DBUtils),欢迎大家下载学习,这不是Apache旗下的DBUtils哦~

    DBUtils操作数据库以及事物的管理

    DBUtils操作数据库以及事物的管理

    commons-dbutils-1.7.jar

    commons-dbutils-1.7.jarcommons-dbutils-1.7.jarcommons-dbutils-1.7.jar

    commons-dbutils-1.3.zip

    这里分享的是commons-dbutils-1.3,解压打开导入commons-dbutils-1.3.jar即可

    commons-dbutils-1.7-API文档-中英对照版.zip

    赠送jar包:commons-dbutils-1.7.jar; 赠送原API文档:commons-dbutils-1.7-javadoc.jar; 赠送源代码:commons-dbutils-1.7-sources.jar; 赠送Maven依赖信息文件:commons-dbutils-1.7.pom; 包含翻译后的API文档...

    commons-dbutils-1.6.jar包

    包org.apache.commons.dbutils DbUtils是一个为简化JDBC操作的小类库. 接口摘要 ResultSetHandler 将ResultSet转换为别的对象的工具. RowProcessor 将ResultSet行转换为别的对象的工具. 类摘要 BasicRowProcessor ...

    commons-dbutils-1.7.zip

    dbutils

    commons-dbutils.jar.rar

    commons-dbutils.jar jdbc工具类jar包 1.3、1.6、1.7三个版本

    python-dbutils 简单封装

    python dbutils 简单封装

    commons-dbutils-1.4.jar

    commons-dbutils-1.4.jar

    commons-dbutils-1.7.rar

    commons-dbutils-1.7.jar,commons-dbutils-1.7-javadoc.jar,commons-dbutils-1.7-sources.jar,commons-dbutils-1.7-tests.jar,commons-dbutils-1.7-test-sources.jar

    C3P0和DButils

    c3p0-0.9.1.2.jar、commons-dbutils-1.4.jar、mysql-connector-java-5.1.39-bin.jar

    DBUtils.zip

    将常用的操作数据库的JDBC的类和...MapHandler:把结果集转为一个 Map MapListHandler:把结果集转为一个 Map 的 List ScalarHandler:把结果集转为一个类型的数据返回, 该类型通 常指 String 或其它 8 种基本数据类型.

Global site tag (gtag.js) - Google Analytics