| return key; } /** * 打印,用于调试 */ public void dump() { for (Iterator e = map.keySet().iterator(); e.hasNext(); ) { String name = (String) e.next(); Object value = map.get(name); System.out.print(name + "=" + value + ", "); } System.out.println(""); } /** * 将行对象转换成值对象 * @param row * @param type值对象类型 * @return * @throws java.lang.Exception 这里的异常一般在DAO中处理,因为DAO调用 * 这个方法进行Row和ValueObject的转换 */ public static Object toValueObject(Row row, Class type) throws Exception { Object vo = type.newInstance(); //创建一个值对象 Field[] fields = type.getDeclaredFields(); //得到值对象中所有字段 for (int i = 0; i < fields.length; i++) { String name = fields[i].getName(); //得到JavaBean的字段名 String nameInRow = toInRowName(name);//在此进行值对象名称到行对象名称的转换 Object value = row.get(nameInRow); //得到从数据库中取出的与字段名对应的值 String methodName = "set" + Character.toUpperCase(name.charAt(0)) + name.substring(1); //得到setXXXX方法名 Class argClass = null; if (value instanceof Class) { argClass = (Class)value; value = null; }else{ argClass = value.getClass(); } Method method = type.getMethod(methodName, new Class[] {argClass}); //得到set方法 method.invoke(vo, new Object[] {value});//调用setXXXX方法 } return vo; } /** * 根据传过来的值对象和类型把值对象转换到行对象中 * @param vo * @return * @throws java.lang.Exception 这里的异常一般在DAO中处理,因为DAO调用 * 这个方法进行Row和ValueObject的转换 */ |