packagecom.xkj.spider.mpb.util;importjava.lang.reflect.Method;importjava.util.HashMap;importjava.util.Map;importjava.util.TreeMap;importlombok.extern.slf4j.Slf4j;/*** 对属性进行排序得一个排序后的属性字符串
*@authoryangzl
* @data 2019年4月4日
**/@Slf4jpublic classSortPropertiesUtils {public static final String PARAM_EQUAL = "=";public static final String PARAM_AND = "&";privateSortPropertiesUtils() {}/*** 对Object进行List转换后按key进行升序排序,以key=value&...形式返回
*
*@paramlist
*@return
*/
public staticString sort(Object order) {
Map map =bean2Parameters(order);returnsort(map);
}/*** 对对Object转换后, 以key=value&...形式返回按key进行升序排序,以key=value&...形式返回
*
*@paramorder
*@return
*/
public static String sort(Maporder) {if (null == order ||order.isEmpty()) {return null;
}
Map parameters = new TreeMap<>((obj1, obj2) ->obj1.compareToIgnoreCase(obj2));
parameters.putAll(order);
StringBuilder sb= newStringBuilder();for (Map.Entryentry : parameters.entrySet()) {if (null !=entry.getValue()) {
sb.append(entry.getKey());
sb.append(PARAM_EQUAL);
sb.append(entry.getValue().toString());
sb.append(PARAM_AND);
}
}
String params=sb.toString();if(sb.toString().endsWith(PARAM_AND)) {
params= sb.substring(0, sb.length() - 1);
}returnparams;
}/*** 将bean转换成键值对列表
*
*@parambean
*@return
*/
private static Mapbean2Parameters(Object bean) {if (bean == null) {return null;
}
Map parameters = new HashMap<>();if (null !=parameters) {//取得bean所有public 方法
Method[] Methods =bean.getClass().getMethods();for(Method method : Methods) {if (method != null && method.getName().startsWith("get") && !method.getName().startsWith("getClass")) {//得到属性的类名
Object value = null;//得到属性值
try{
value=method.invoke(bean);if (null !=value) {//添加参数//将方法名称转化为id,去除get,将方法首字母改为小写
String param = method.getName().replaceFirst("get", "");if (param.length() > 0) {
String first= String.valueOf(param.charAt(0)).toLowerCase();
param= first + param.substring(1);
}
parameters.put(param, value);
}
}catch(Exception e) {
log.error("", e.getMessage(), e);
}
}
}
}returnparameters;
}
}