首先,列出需要的属性名,把不需要的去掉
例:
String[] fields = new String[] {
"id", "name", "age", "sex", ...
};
接着查出数据源
List<User> dataList = userMapper.queryPage(User, page);
最后过滤数据并传回
传入数据源和属性名数组
public static <T> List<JSONObject> formatList(List<T> dataList, String[] fields) {
if(list == null) return null;
if(list.size() == 0) return new ArrayList<>();
List<JSONObject> jsonList = new ArrayList<>();
for(T obj : list) {
jsonList.add(format(obj, fields));
}
return jsonList;
}
import java.beans.PropertyDescriptor;
/**
* 按照 fields 数组提取 obj(单行数据) 中field对应的值
* @param obj 需要提取的单行数据源
* @param fields obj 的属性名
* @param <T> 泛型
* @return
*/
public static <T> JSONObject format(T obj, String[] fields) {
if(obj == null) return null;
if(fields == null || fields.length == 0) return new JSONObject();
JSONObject jsonObject = new JSONObject();
for(String field : fields) {
try {
PropertyDescriptor descriptor = new PropertyDescriptor(field, obj.getClass());
Object value = descriptor.getReadMethod().invoke(obj);
jsonObject.put(field, value);
} catch (IntrospectionException | IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
throw new CustomExcepiton();
}
}
return jsonObject;
}