您的位置:首页 > 移动开发 > Objective-C

DbUtils 扩展BeanProcessor的处理方式,使其能够处理如DATA_OBJECT_NAME -> dataObjectName这样的映射关系

2012-07-16 15:38 531 查看
package com.moya.tool;

import java.beans.PropertyDescriptor;

import java.sql.ResultSetMetaData;

import java.sql.SQLException;

import java.util.Arrays;

import org.apache.commons.dbutils.BeanProcessor;

import org.apache.commons.lang3.StringUtils;

/**

* 扩展BeanProcessor的处理方式,使其能够处理如DATA_OBJECT_NAME -> dataObjectName这样的映射关系 */

public class GenBeanProcess extends BeanProcessor {

/**

* 替换BeanProcessor的映射关系处理

*/

@Override

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 = rsmd.getColumnLabel(col);

if (null == columnName || 0 == columnName.length()) {

columnName = rsmd.getColumnLabel(col);

}

for (int i = 0; i < props.length; i++) {

if (convert(columnName).equals(props[i].getName())) {

columnToProperty[col] = i;

break;

}

}

}

return columnToProperty;

} /**

* DATA_OBJECT_NAME -> dataObjectName

*/

private String convert(String objName) {

StringBuilder result = new StringBuilder();

String[] tokens = objName.split("_");

for (String token : tokens) {

if (result.length() == 0)

result.append(token.toLowerCase());

else

result.append(StringUtils.capitalize(token.toLowerCase()));

}

return result.toString();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐