借助basicName获取timestamp字段,MySQL返回java.sql.Timestamp,而Oracle返回oracle.sql.Timestamp;
timestampValue继承了java.util.Date,所以可以借此来讲oracle中的timestamp字段在jdbc的获取方式下,转换为util下的Date类并格式化,then done!
/** * 转换映射表映射值 * * @param obj * 转换对象 * @param dataType * 转换类型 1-字符串;2-小数;3-整型;4-日期时间 * @param dataFormat * 转换格式 * @param jsonMap * 映射数据 * @return * @throws SQLException */ private Object transferMappingValues(Object obj, int dataType, String dataFormat, Map<String, String> jsonMap) throws SQLException { // 1.判断类型;2.转换格式;3.取关联值 String basicName = obj.getClass().getSimpleName(); switch (dataType) { case 1: case 3: // 字符串,整型:不需转格式 break; case 2: // 小数,默认不截取 if (obj == null || "".equals(obj)) { // 数据库无值且无默认值,赋值0 return 0; } if (!StringUtil.isNullOrEmpty(dataFormat)) { int decimal = Integer.parseInt(dataFormat); if (decimal >= 0) { String format = String.format("%.0" + decimal + "f", Double.parseDouble(obj.toString())); obj = (StringUtil.isNullOrEmpty(format) ? obj : Double.parseDouble(format)); } } break; case 4: // 日期时间 if (obj == null || "".equals(obj)) { // 数据库无值且无默认值,赋值‘’ return ""; } if ("Date".equals(basicName)) { if (!StringUtil.isNullOrEmpty(dataFormat)) { obj = new SimpleDateFormat(dataFormat).format(obj); } } // mysql if ("Timestamp".equals(basicName)) { Date date = (Timestamp)obj; if (!StringUtil.isNullOrEmpty(dataFormat)) { obj = new SimpleDateFormat(dataFormat).format(date); } } // oracle if ("TIMESTAMP".equals(basicName)) { TIMESTAMP t = (TIMESTAMP)obj; Date date = t.timestampValue(); if (!StringUtil.isNullOrEmpty(dataFormat)) { obj = new SimpleDateFormat(dataFormat).format(date); } } break; default: break; } return jsonMap.get(obj + "") == null ? StringUtil.getObjectByDataType(obj) : jsonMap.get(obj + ""); }