业务中遇到问题,前端request过来的map中除了需要的查询项还有各种杂项,使用mybatis-plus定位查询条件存在困难,做了一个map移植的工具类,并做驼峰转换。下面方法
getTransformFieldName(name)可以拿出来单独转换成带下划线的数据库字段命名。
public static Map AllEqMap2Map(Class c,Map map){
//查询时用map存数据用
Map<Object, Object> returnMap = new HashMap<>();
Field[] declaredFields = c.getDeclaredFields();
for (Field f:declaredFields) {
if (f.getModifiers() <= 2){
//过滤serialVersionUID
f.setAccessible(true);
String name = f.getName();
String _name = getTransformFieldName(name);
returnMap.put(_name, map.get(name));
}
}
return returnMap;
}
/**
* 转换风格 驼峰转下划线
* @param fieldName 属性名称
* @return
*/
private static String getTransformFieldName(String fieldName) {
Pattern humpPattern = Pattern.compile("[A-Z]");
Matcher matcher = humpPattern.matcher(fieldName);
StringBuffer sb = new StringBuffer();
while(matcher.find()){
matcher.appendReplacement(sb, "_"+matcher.group(0).toLowerCase());
}
matcher.appendTail(sb);
return sb.toString();
}