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.getColumnName(col);
}
for (int i = 0; i < props.length; i++) {
if (columnName.equalsIgnoreCase(props[i].getName())) {
columnToProperty[col] = i;
break;
}
}
}
return columnToProperty;
}
如上如果在数据库定义的字段中为下划线形式,而Pojo中是驼峰式。这样就会发生映不到对应字段。解决方案:1.修改commons.dbutils 关于BeanProcessor如上方法的源码getColumnnName时候在进行一次转化(替换掉下划线转为驼峰式),重新打包编译.2.使用数据库别名!
本文介绍了一种在数据库字段与POJO属性不一致时(如数据库字段为下划线风格而POJO为驼峰风格)导致字段映射失败的问题及解决方案。通过修改commons.dbutils的BeanProcessor源码或使用数据库别名实现字段映射。
867

被折叠的 条评论
为什么被折叠?



