/** * 通过反射和泛型编写通用的查询 * @param clazz * @param sql * @param objects * @return * @throws Exception */public T getObject(Class clazz,String sql,Object ...objects) throws Exception{T entity = null;Connection connection = C3p0Utils.newInstance().getConnection();PreparedStatement preparedStatement = connection.prepareStatement(sql);for(int i=0;i map = new HashMap ();if(resultSet.next()){for(int i=0;i entry : map.entrySet()){String name = entry.getKey();Object value = entry.getValue();Method method = clazz.getMethod(toMethod(name), toClass(clazz, name));method.invoke(entity, value);}return entity;}
/** * 将字段名转换为方法名 * @param name * @return */public String toMethod(String name){ return "set"+name.substring(0, 1).toUpperCase()+name.substring(1);}
/** * 获取指定字段的数据类型 * @param clazz * @param name * @return * @throws Exception */ public Class toClass(Class clazz,String name) throws Exception{ Field field = clazz.getDeclaredField(name); return field.getType(); }