前提:最近使用struts2+spring+hibernate集成框架做项目,突然从springmvc+spring+mybatis转过来不是很适应,尤其是从数据库查出来的数据不是java熟悉的驼峰格式,对了,数据库用的是oracle。所以就想着把数据库大写加下划线格式(USER_TYPE)类型的key转成java熟悉的驼峰格式,就有了该文章的思路。
/**
* 将Map中的key由下划线转换为驼峰
*
* @param map
* @return
*/
public Map<String, Object> formatHumpName(Map<String, Object> map) {
Map<String, Object> newMap = new HashMap<String, Object>();
Iterator<Map.Entry<String, Object>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, Object> entry = it.next();
String key = entry.getKey();
String newKey = toFormatCol(key);
newMap.put(newKey, entry.getValue());
}
return newMap;
}
public String toFormatCol(String colName) {
StringBuilder sb = new StringBuilder();
String[] str = colName.toLowerCase().split("_");
int i = 0;
for (String s : str) {
if (s.length() == 1) {
s = s.toUpperCase();
}
i++;
if (i == 1) {
sb.append(s);
continue;
}
if (s.length() > 0) {
sb.append(s.substring(0, 1).toUpperCase());
sb.append(s.substring(1));
}
}
return sb.toString();
}
优点:解决了大部分数据类型的字段转换。
缺点:对于日期格式的字段,还是需要手动转换。
没有想到怎么更好的解决该问题!