private static List<NameAndType> getColumns(Class<?> bean) {
        List<NameAndType> columns = new ArrayList<NameAndType>();
        Field[] fields = bean.getDeclaredFields();
        if (fields != null) {
            for (int i = 0; i < fields.length; i++) {
                Field field = fields[i];
                if (field.isAnnotationPresent(Column.class)) {
                    String name = null;
                    String type = null;
                    Annotation annotation = field.getAnnotation(Column.class);
                    
                    try {
                    	Method methodName = Column.class.getMethod("name");
                    	//获取注解上的值
                    	name = (String) methodName.invoke(annotation);
                    	// FIXME 目的是判断注解上的值是否存在，不知这么判断是否正确
                    	if (methodName.getDefaultValue().equals(name)) {
                    		//注解上的值不存在，则用成员变量的名称
                    		name = field.getName();
                    	}
                        
                        Method methodType = Column.class.getMethod("type");
                    	type = (String) methodType.invoke(annotation);
                        if (methodType.getDefaultValue().equals(type)) {
                        	if (int.class.isAssignableFrom(field.getType())) {
                                type = "integer";
                            } else if (String.class.isAssignableFrom(field.getType())) {
                                type = "text";
                            } else {
                                throw new RuntimeException("unspported type=" + field.getType().getSimpleName());
                            }
                        }
                        
                    } catch (Exception e) {
                        e.printStackTrace();
                    }

                    columns.add(new NameAndType(name, type));
                }

            }
        }
        return columns;
    }