修改DbUtils支持表名下划线映射(驼峰模式)
修改DbUtils支持表名下划线映射(驼峰模式)
Zero__One 发表于3年前
修改DbUtils支持表名下划线映射(驼峰模式)
  • 发表于 3年前
  • 阅读 591
  • 收藏 12
  • 点赞 1
  • 评论 2
摘要: 修改DbUtils支持表名下划线映射

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

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

 

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

 

1、下载DbUtils的源代码

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

private String getPropertyName(String columnName){		
	StringBuilder sb = new StringBuilder();
	boolean match = false;
	for (int i=0; i<columnName.length(); i++){
		char ch = columnName.charAt(i);
		if (match && ch>=97 && ch<=122)
			ch -= 32;
		if (ch!='_'){
			match = false;
			sb.append(ch);	
		}else{				
			match = true;	
		}			
	}
	return sb.toString();
}

3、修改mapColumnsToProperties函数,把原来的 rsmd.getColumnName(col) 修改为 getPropertyName(rsmd.getColumnName(col))。

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++) {
        String columnName = getPropertyName(rsmd.getColumnName(col));
        for (int i = 0; i < props.length; i++) {

            if (columnName.equalsIgnoreCase(props[i].getName())) {
                columnToProperty[col] = i;
                break;
            }
        }
    }

    return columnToProperty;
}

 4、mvn package编译,搞定!

 

懒得编译的少年,直接下载附件吧


共有 人打赏支持
粉丝 13
博文 50
码字总数 13344
评论 (2)
蛙牛
标题是不是有点问题 应该是修改支持驼峰模式吧....
Zero__One

引用来自“蛙牛”的评论

标题是不是有点问题 应该是修改支持驼峰模式吧....
我不知道这个模式叫驼峰模式, 现在去改吧.
×
Zero__One
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: