封装成一个方法:
// 通过反射遍历实体类的属性并得到属性值集合,去除业务无关主键值 public static List<String> getContentsList(Object model) throws Exception { List<String> values = new ArrayList<String>(); // 获取实体类的所有属性,返回Field数组 Field[] field = model.getClass().getDeclaredFields(); // 遍历所有属性 for (int j = 0; j < field.length; j++) { // 获取属性的名字 String name = field[j].getName(); // 过滤掉id/createDate/creater属性 if (!("id".equals(name))) { // 将属性的首字符大写,方便构造get,set方法 name = name.substring(0, 1).toUpperCase() + name.substring(1); // 获取属性的类型 String type = field[j].getGenericType().toString(); // System.out.println("属性为:" + name); if (type.equals("class java.lang.String")) { Method m = model.getClass().getMethod("get" + name); // 调用getter方法获取属性值 String value = (String) m.invoke(model); if (value != null) { // System.out.println("属性值为:" + value); values.add(value); } else { values.add(""); } } if (type.equals("class java.util.Date")) { Method m = model.getClass().getMethod("get" + name); Date value = (Date) m.invoke(model); if (value != null) { // System.out.println("属性值为:" + value); String stringDate = DateUtil.ChangeTime2(value); values.add(stringDate); } else { values.add(""); } } if (type.equals("class java.lang.Double")) { Method m = model.getClass().getMethod("get" + name); Double value = (Double) m.invoke(model); if (value != null) { // System.out.println("属性值为:" + value); String stringDouble = Double.toString(value); values.add(stringDouble); } else { values.add(""); } } if (type.equals("class java.lang.Integer")) { Method m = model.getClass().getMethod("get" + name); Integer value = (Integer) m.invoke(model); if (value != null) { // System.out.println("属性值为:" + value); String stringInteger = Integer.toString(value); values.add(stringInteger); } else { values.add(""); } } } } return values; }
文章来源: 通过反射遍历实体类的属性并得到属性值集合