DbUtils 扩展BeanProcessor的处理方式,使其能够处理如DATA_OBJECT_NAME -> dataObjectName这样的映射关系
2012-07-16 15:38
591 查看
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();
}
}
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();
}
}
相关文章推荐
- Java IO流->处理流->数据流:DataOutputStream&DataInputStream
- java-mysql异常<Data truncation: Data too long for column 'name ' at row 1>讨论
- Hibernate注解方式处理实体映射关系
- 从零开始学android<android事件的处理方式.二十四.>
- Unable to find any test data conversion strategy for parameter with name ArrayList<XXX>
- Java中安卓开发的webservice传递到客户端是List<Map<Object, Object>>的处理方式
- DriverObject->DriverSection结构体LDR_DATA_TABLE_ENTRY中的结构
- [ASP.NET Ajax] ECMAScript基础类以及Asp.net Ajax对类<Object>的扩展
- android中对/data/data/<package name>/files下文件的读写操作
- <form method=post action="addNew_hxxm.jsp" name="form1"enctype="multipart/form-data">
- getWeatherbyCityName(city),服务器无法处理请求。 ---> 未将对象引用设置到对象的实例。
- error:No agents listed in 'http.agent.name' property 处理方式
- hibernate annotation注解方式来处理映射关系
- <转载>Js中Prototype、__proto__、Constructor、Object、Function关系介绍
- Ms Ajax Lib-> Object 类型扩展
- hibernate annotation注解方式来处理映射关系
- hibernate注解方式来处理映射关系
- form前台提交List<Object>对象以及后台处理
- 一步一步学EF系列二【Fluent API的方式来处理实体与数据表之间的映射关系】
- hibernate annotation注解方式来处理映射关系