docs: @SuppressWarnings("unchecked")
  	public static <T> T handleRow(int columnCount, ResultSetMetaData meta, ResultSet rs, Class<T> beanClass) throws SQLException {
  		Assert.notNull(beanClass, "Bean Class must be not null !");
  		
  		if(beanClass.isArray()) {
  			//返回数组
  			final Class<?> componentType = beanClass.getComponentType();
  			final Object[] result = ArrayUtil.newArray(componentType, columnCount);
  			for(int i = 0,j = 1; i < columnCount; i++, j++) {
  				result[i] = getColumnValue(rs, j, meta.getColumnType(j), componentType);
  			}
  			return (T) result;
  		} else if(Iterable.class.isAssignableFrom(beanClass)) {
  			//集合
  			final Object[] objRow = handleRow(columnCount, meta, rs, Object[].class);
  			return Convert.convert(beanClass, objRow);
  		} else if(beanClass.isAssignableFrom(Entity.class)) {
  			//Entity的父类都可按照Entity返回
  			return (T) handleRow(columnCount, meta, rs);
  		} else if(String.class == beanClass) {
  			//字符串
  			final Object[] objRow = handleRow(columnCount, meta, rs, Object[].class);
  			return (T) StrUtil.join(", ", objRow);
  		}
  		
  		//普通bean
  		final T bean = ReflectUtil.newInstanceIfPossible(beanClass);
  		//忽略字段大小写
  		final Map<String, PropDesc> propMap = BeanUtil.getBeanDesc(beanClass).getPropMap(true);
  		String columnLabel;
  		PropDesc pd;
  		Method setter = null;
  		Object value = null;
  		for (int i = 1; i <= columnCount; i++) {
  			columnLabel = meta.getColumnLabel(i);
  			//驼峰命名风格
  			pd = propMap.get(StrUtil.toCamelCase(columnLabel));
  			setter = (null == pd) ? null : pd.getSetter();
  			if(null != setter) {
  				value = getColumnValue(rs, columnLabel,  meta.getColumnType(i), TypeUtil.getFirstParamType(setter));
  				ReflectUtil.invokeWithCheck(bean, setter, new Object[] {value});
  			}
  		}
  		return bean;
  	}