工具类
package net.test.common.util;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
/**
* sql操作工具类
*/
public class SqlUtil {
/**
* 仅支持字母、数字、下划线、空格、逗号(支持多个字段排序)
*/
public static String SQL_PATTERN = "[a-zA-Z0-9_\\ \\,]+";
/**
* SQL 默认日期字符串
*/
public static final String SQL_DEFAULT_EMPTY_DATE = "'0000-00-00'";
/**
* 将数组转换成以逗号分隔的字符串,拼成in格式
*
* @param strList 需要转换的数组
* @return 以逗号分割的字符串
*/
public static String joinWithComma(List<String> strList) {
if (strList.isEmpty()) {
return StringUtils.EMPTY;
}
List<String> arr = new ArrayList<>();
for (String str : strList) {
String comma = "'" + str.trim() + "'";
if (!arr.contains(comma) && StringUtils.isNotEmpty(str)) {
arr.add(comma);
}
}
return StringUtils.join(arr, ",");
}
/**
* 将字符串转换成以逗号分隔的字符串,拼成in格式
*
* @param strList 字符串多个用逗号分隔
* @return 以逗号分割的字符串
*/
public static String joinStringComma(String strList) {
if (StringUtils.isBlank(strList)) {
return StringUtils.EMPTY;
}
String[] strArray = strList.split(",");
return joinWithComma(Arrays.asList(strArray));
}
/**
* 检查字符,防止注入绕过
*/
public static String escapeOrderBySql(String value) {
if (StringUtils.isNotEmpty(value) && !isValidOrderBySql(value)) {
return StringUtils.EMPTY;
}
return value;
}
/**
* 验证 order by 语法是否符合规范
*/
public static boolean isValidOrderBySql(String value) {
return value.matches(SQL_PATTERN);
}
/**
* 获取SQL默认日期字符串
*
* @return SQL默认日期字符串 '0000-00-00'
*/
public static String getSqlDefaultEmptyDate() {
return SQL_DEFAULT_EMPTY_DATE;
}
}