首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

修改DbUtils支持表名上划线映射

2012-11-03 
修改DbUtils支持表名下划线映射Commons DbUtils很一个很好用JDBC工具类,地球人都知道,就不介绍了,不知道的

修改DbUtils支持表名下划线映射

Commons DbUtils很一个很好用JDBC工具类,地球人都知道,就不介绍了,不知道的看这里:http://commons.apache.org/dbutils/

?

在进行查询自动类映射的时候domain类的属性必须和数据库中名称一样,但是如果数据库的表名使用带下划线的设计,domain类中的属性也要使用下划线,看起来很不雅观,而且使用hibernate工具自动生成的domain类会自动去掉下划线,下划线后面的用大写字母,比如user_name转换后为userName,因此有必要让DbUtils支持这种设计。

?

好,目标已经明确,下来就是开工了!

?

1、下载DbUtils的源代码

2、找到commons-dbutils-1.2-src\src\java\org\apache\commons\dbutils下的BeanProcessor.java,增加一个函数,代码如下:

 protected int[] mapColumnsToProperties(ResultSetMetaData rsmd,            PropertyDescriptor[] props) throws SQLException {        int cols = rsmd.getColumnCount();        int columnToProperty[] = new int[cols + 1];        Arrays.fill(columnToProperty, PROPERTY_NOT_FOUND);        for (int col = 1; col <= cols; col++) {                        //已经改过来为getColumnLabel了                       String columnName = rsmd.getColumnLabel(col);            if (null == columnName || 0 == columnName.length()) {              columnName = rsmd.getColumnName(col);            }            for (int i = 0; i < props.length; i++) {                if (columnName.equalsIgnoreCase(props[i].getName())) {                    columnToProperty[col] = i;                    break;                }            }        }        return columnToProperty;    }
2 楼 dean_liu 2010-02-06   hack源码好像不是最好的方式.
看下我的方式:
http://dean-liu.iteye.com/blog/588753 3 楼 zhaoyou 2010-03-22   按照你的意思,是列名的问题吧,用查询的时候用 as 关键字可以解决吧,然后修改一下源码把getColumnName变成getLableName可以吗?

热点排行