package com.utils; import java.lang.reflect.Field; import java.math.BigDecimal; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; import java.util.Set; public class CommonUtils { /** * 将map中的值赋值到po中 * * @param map * 前台传过来的值封装成的map对象 * @param obj * po实体类 */ public static void getLatestObjectByMap(Map<String, ?> map, Object obj) { Set<String> keys = map.keySet(); for (String key : keys) { Object value = map.get(key); Class<? extends Object> clazz = obj.getClass(); try { Field field = clazz.getDeclaredField(key); field.setAccessible(true); field.set(obj, getValue(key, field.getType().getName(), value)); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } } /** * 将fieldValue转为dataType类型的值 * * @param key * @param dataType * @param fieldValue * @return */ private static Object getValue(String key, String dataType, Object fieldValue) { String errorMessage = key + "为[" + dataType + "]而设置的值为[" + fieldValue.getClass().getName() + "]"; String numberFormatErrorMessage = key + " [" + fieldValue + "]转换为[" + dataType + "]出错"; System.out.println(dataType); if ("java.sql.Date".equals(dataType)) { if (fieldValue instanceof java.sql.Date) { return fieldValue; } else if (fieldValue instanceof java.lang.String) { String formatString = "yyyy-MM-dd"; try { SimpleDateFormat sdf = new SimpleDateFormat(formatString); Date date = sdf.parse((String) fieldValue); return new java.sql.Date(date.getTime()); } catch (Exception e) { throw new RuntimeException(key + "[" + fieldValue + "]格式错误,正确格式为[" + formatString + "]"); } } else { throw new RuntimeException(errorMessage); } } else if ("java.util.Date".equals(dataType)) { if (fieldValue instanceof java.util.Date) { return fieldValue; } else if (fieldValue instanceof java.lang.String) { String formatString = "yyyy-MM-dd"; try { SimpleDateFormat sdf = new SimpleDateFormat(formatString); java.util.Date date = sdf.parse((String) fieldValue); return date; } catch (Exception e) { throw new RuntimeException(key + "[" + fieldValue + "]格式错误,正确格式为[" + formatString + "]"); } } else { throw new RuntimeException(errorMessage); } } else if ("java.sql.Timestamp".equals(dataType)) { if (fieldValue instanceof java.sql.Timestamp) { return fieldValue; } else if (fieldValue instanceof java.lang.String) { String formatString = "yyyy-MM-dd HH:mm:ss"; try { SimpleDateFormat sdf = new SimpleDateFormat(formatString); Date date = sdf.parse((String) fieldValue); return new Timestamp(date.getTime()); } catch (Exception e) { throw new RuntimeException(key + "[" + fieldValue + "]格式错误,正确格式为[" + formatString + "]"); } } else { throw new RuntimeException(errorMessage); } } else if ("java.lang.String".equals(dataType)) { if (fieldValue instanceof java.lang.String) { return fieldValue; } else { throw new RuntimeException(errorMessage); } } else if ("java.math.BigDecimal".equals(dataType)) { if (fieldValue instanceof java.math.BigDecimal) { return fieldValue; } else if (fieldValue instanceof java.lang.String) { try { return new BigDecimal(String.valueOf(fieldValue)); } catch (Exception e) { throw new RuntimeException(numberFormatErrorMessage); } } else { throw new RuntimeException(errorMessage); } } else if (("java.lang.Integer".equals(dataType)) || ("int".equals(dataType))) { if (fieldValue instanceof java.lang.Integer) { return fieldValue; } else if (fieldValue instanceof java.lang.String) { try { return new Integer(String.valueOf(fieldValue)); } catch (Exception e) { throw new RuntimeException(numberFormatErrorMessage); } } else { throw new RuntimeException(errorMessage); } } else if (("java.lang.Long".equals(dataType)) || ("long".equals(dataType))) { if (fieldValue instanceof java.lang.Long) { return fieldValue; } else if (fieldValue instanceof java.lang.String) { try { return new Long(String.valueOf(fieldValue)); } catch (Exception e) { throw new RuntimeException(numberFormatErrorMessage); } } else { throw new RuntimeException(errorMessage); } } else if (("java.lang.Short".equals(dataType)) || ("short".equals(dataType))) { if (fieldValue instanceof java.lang.Short) { return fieldValue; } else if (fieldValue instanceof java.lang.String) { try { return new Short(String.valueOf(fieldValue)); } catch (Exception e) { throw new RuntimeException(numberFormatErrorMessage); } } else { throw new RuntimeException(errorMessage); } } else if (("java.lang.Byte".equals(dataType)) || ("byte".equals(dataType))) { if (fieldValue instanceof java.lang.Byte) { return fieldValue; } else if (fieldValue instanceof java.lang.String) { try { return new Byte(String.valueOf(fieldValue)); } catch (Exception e) { throw new RuntimeException(numberFormatErrorMessage); } } else { throw new RuntimeException(errorMessage); } } else if (("java.lang.Float".equals(dataType)) || ("float".equals(dataType))) { if (fieldValue instanceof java.lang.Float) { return fieldValue; } else if (fieldValue instanceof java.lang.String) { try { return new Float(String.valueOf(fieldValue)); } catch (Exception e) { throw new RuntimeException(numberFormatErrorMessage); } } else { throw new RuntimeException(errorMessage); } } else if (("java.lang.Double".equals(dataType)) || ("double".equals(dataType))) { if (fieldValue instanceof java.lang.Double) { return fieldValue; } else if (fieldValue instanceof java.lang.String) { try { return new Double(String.valueOf(fieldValue)); } catch (Exception e) { throw new RuntimeException(numberFormatErrorMessage); } } else { throw new RuntimeException(errorMessage); } } else if (("java.lang.Boolean".equals(dataType)) || ("boolean".equals(dataType))) { if (fieldValue instanceof java.lang.Boolean) { return fieldValue; } else if (fieldValue instanceof java.lang.String) { if ("true".equals(fieldValue)) { return new Boolean(true); } else if ("false".equals(fieldValue)) { return new Boolean(false); } else { throw new RuntimeException(numberFormatErrorMessage); } } else { throw new RuntimeException(errorMessage); } } else if (("java.lang.Character".equals(dataType)) || ("char".equals(dataType))) { { return new Character(String.valueOf(fieldValue).charAt(0)); } } return fieldValue; } }