MySQL中的datetime类型改怎么转化成java的Timestamp

景培培哎 2020-06-24 07:06:30

/**
* 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();

}



一直在报错说参数不匹配

以上是我获取mysql数据,转化成java实体类的代码
请各位帮我看一下,应该怎么将datetime转化成Timestamp
...全文
4560 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
临世驻年 2020-07-08
  • 打赏
  • 举报
回复

DATETIME -> Timestamp: UNIX_TIMESTAMP(...)

Timestamp -> DATETIME: FROM_UNIXTIME(...)

mysql> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(NOW()));
YangjulongTrue 2020-06-24
  • 打赏
  • 举报
回复
还不如都用string 转 方便控制
你这个要不就从方法定义上改 要不就 resultSet.getObject(fieldNameToClumeName(field.getName()))
加个判断 是不是 datetime 是就 自己 代码 替换一下

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧