62,614
社区成员
发帖
与我相关
我的任务
分享
/**
* resultset转化为object
*
* @param resultSet
*
* @return
* @throws Exception
*/
private <T> T reslutSetToObject(Class<T> cla, ResultSet resultSet){
try {
T t = cla.newInstance();
//获取类的所有属性
Field[] fields = cla.getDeclaredFields();
for (Field field : fields) {
//获取对应的set方法
String setMethod = "set"
+ field.getName().substring(0, 1).toUpperCase()
+ field.getName().substring(1);
if ("setSerialVersionUID".equals(setMethod)) {
continue;
}
Method method = cla.getDeclaredMethod(setMethod, field.getType());
try {
if (resultSet.findColumn(fieldNameToClumeName(field.getName())) > 0) {
method.invoke(t, resultSet.getObject(fieldNameToClumeName(field.getName())));
}
} catch (SQLException throwables) {
logger.warn(throwables.getMessage());
continue;
}
}
return t;
} catch (IllegalAccessException | NoSuchMethodException | InstantiationException | InvocationTargetException e) {
logger.error(e.getMessage());
return null;
}
}
/**
* 将对象的属性名转化为列名
*
* @param fieldName
*
* @return
*/
private String fieldNameToClumeName(String fieldName) {
if (fieldName == null) {
return null;
}
StringBuilder sb = new StringBuilder();
boolean upperCase = false;
for (int i = 0; i < fieldName.length(); i++) {
char c = fieldName.charAt(i);
boolean nextUpperCase = true;
if (i < (fieldName.length() - 1)) {
nextUpperCase = Character.isUpperCase(fieldName.charAt(i + 1));
}
if ((i >= 0) && Character.isUpperCase(c)) {
if (!upperCase || !nextUpperCase) {
if (i > 0) {
sb.append("_");
}
}
upperCase = true;
} else {
upperCase = false;
}
sb.append(Character.toLowerCase(c));
}
return sb.toString();
}
DATETIME -> Timestamp: UNIX_TIMESTAMP(...)
Timestamp -> DATETIME: FROM_UNIXTIME(...)
mysql> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(NOW()));