private static void checkParmter(Object paramter) {
if (isWrapClass(paramter.getClass())) {
return;
}
if (paramter instanceof Collection) {
checkList((Collection<?>) paramter);
return;
}
if (paramter.getClass().isArray()) {
checkList(Arrays.asList((Object[]) paramter));
return;
}
if (paramter instanceof Map) {
checkMap((Map<?, ?>) paramter);
return;
}
checkObject(paramter);
}
private static void checkObject(Object paramter) {
try {
Field[] fields = paramter.getClass().getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
if (Modifier.isStatic(field.getModifiers()) || Modifier.isFinal(field.getModifiers())) {
return;
}
if (field.get(paramter) instanceof String) {
field.set(paramter, checkStr(field.get(paramter).toString().toString()));
} else {
checkParmter(field.get(paramter));
}
}
} catch (Exception e) {
return;
}
}
private static void checkMap(Map<?, ?> paramter) {
for (Entry<?, ?> entry : paramter.entrySet()) {
checkParmter(entry.getValue());
}
}
private static void checkList(Collection<?> paramter) {
for (Object ele : paramter) {
checkParmter(ele);
}
}
/**
* 判斷一個類是否是基本類型(或者包裝類)
* @param clazz
* @return
*/
private static boolean isWrapClass(Class<?> clazz) {
try {
if (clazz.isPrimitive()) {
return true;
}
return ((Class<?>) clazz.getField("TYPE").get(null)).isPrimitive();
} catch (IllegalArgumentException | IllegalAccessException | NoSuchFieldException | SecurityException e) {
return false;
}
}
private static Object checkStr(String str) {
return StringEscapeUtils.escapeSql(str);
}