/**
* <p>
* 扩充sql
* 无需考虑sql注入风险
* </p>
*
* @author duguotao
* @version 1.0.0
* @since Created in 2021/11/30
*/
public class Sql {
private StringBuilder where = new StringBuilder();
private String groupBy;
private String having;
private String orderBy;
public StringBuilder getWhere() {
return where;
}
public void setWhere(StringBuilder where) {
this.where = where;
}
public String getGroupBy() {
return groupBy;
}
public void setGroupBy(String groupBy) {
this.groupBy = groupBy;
}
public String getHaving() {
return having;
}
public void setHaving(String having) {
this.having = having;
}
public String getOrderBy() {
return orderBy;
}
public void setOrderBy(String orderBy) {
this.orderBy = orderBy;
}
public Sql addOrderBy(String sort, String order) {
if (!isEmpty(sort) && !isEmpty(order)) {
this.orderBy = ObjectHelper.underscoreName(sort) + " " + order;
}
return this;
}
public Sql orLike(String value, String columns) {
if (!isEmpty(value)) {
StringBuilder strBuf = new StringBuilder("");
for (String column : columns.split(",")) {
strBuf.append(ObjectHelper.underscoreName(column)).append(" like '%").append(value).append("%' or ");
}
String orLikeStr = strBuf.substring(0, strBuf.lastIndexOf("or"));
where.append(" and (").append(orLikeStr).append(")");
}
return this;
}
public Sql eq(String column, String value) {
if (!isEmpty(value)) {
where.append(" and ").append(ObjectHelper.underscoreName(column)).append(" = '").append(sqlParam(value)).append("'");
}
return this;
}
public Sql ne(String column, String value) {
if (!isEmpty(value)) {
where.append(" and ").append(ObjectHelper.underscoreName(column)).append(" != '").append(sqlParam(value)).append("'");
}
return this;
}
public Sql like(String column, String value) {
if (!isEmpty(value)) {
where.append(" and ").append(ObjectHelper.underscoreName(column)).append(" like '%").append(sqlParam(value)).append("%'");
}
return this;
}
public Sql notLike(String column, String value) {
if (!isEmpty(value)) {
where.append(" and ").append(ObjectHelper.underscoreName(column)).append(" not like '%").append(sqlParam(value)).append("%'");
}
return this;
}
public Sql in(String column, String... values) {
if (!isEmpty(values)) {
where.append(" and ").append(ObjectHelper.underscoreName(column)).append(" in (").append(inValuesString(values)).append(")");
}
return this;
}
public Sql notIn(String column, String... values) {
if (!isEmpty(values)) {
where.append(" and ").append(ObjectHelper.underscoreName(column)).append(" not in (").append(inValuesString(values)).append(")");
}
return this;
}
public Sql gt(String column, String value) {
if (!isEmpty(value)) {
where.append(" and ").append(ObjectHelper.underscoreName(column)).append(" > '").append(sqlParam(value)).append("'");
}
return this;
}
public Sql gte(String column, String value) {
if (!isEmpty(value)) {
where.append(" and ").append(ObjectHelper.underscoreName(column)).append(" >= '").append(sqlParam(value)).append("'");
}
return this;
}
public Sql lt(String column, String value) {
if (!isEmpty(value)) {
where.append(" and ").append(ObjectHelper.underscoreName(column)).append(" < '").append(sqlParam(value)).append("'");
}
return this;
}
public Sql lte(String column, String value) {
if (!isEmpty(value)) {
where.append(" and ").append(ObjectHelper.underscoreName(column)).append(" <= '").append(sqlParam(value)).append("'");
}
return this;
}
public Sql between(String column, String from, String to) {
if (isEmpty(from) && isEmpty(to)) {
return this;
}
if (isEmpty(to)) {
where.append(" and ").append(ObjectHelper.underscoreName(column)).append(" >= '").append(sqlParam(from)).append("'");
} else if (isEmpty(from)) {
where.append(" and ").append(ObjectHelper.underscoreName(column)).append(" <= '").append(sqlParam(to)).append("'");
} else {
where.append(" and ").append(ObjectHelper.underscoreName(column)).append(" between '").append(sqlParam(from)).append("' and '").append(sqlParam(to)).append("'");
}
return this;
}
public String build() {
StringBuilder sql = new StringBuilder("");
final int a = 4;
final int b = 5;
if (where.length() > a) {
sql.append(" ").append(where.substring(b));
}
if (!isEmpty(groupBy)) {
sql.append(" group by ").append(groupBy);
}
if (!isEmpty(having)) {
sql.append(" having ").append(having);
}
if (!isEmpty(orderBy)) {
sql.append(" order by ").append(orderBy);
}
return sql.toString();
}
private static boolean isEmpty(String value) {
return value == null || "".equals(value) || value.trim().length() == 0;
}
private static boolean isEmpty(String[] values) {
if (values == null || values.length == 0) {
return true;
}
for (String value : values) {
if (!isEmpty(value)) {
return false;
}
}
return true;
}
private static String inValuesString(String[] values) {
StringBuilder string = new StringBuilder();
for (String value : values) {
if (isEmpty(value)) {
continue;
}
string.append('\'');
string.append(value);
string.append('\'');
string.append(',');
}
if (string.length() > 0) {
string.deleteCharAt(string.length() - 1);
}
return string.toString();
}
private static String sqlParam(String sqlParam) {
return sqlParam.replaceAll("([';]+|(--)+)", "");
}
}
public class ObjectHelper {
/**
* 将id数组转换为id集合
*/
public static List<Long> initIds(String[] ids) {
List<Long> list = new ArrayList<Long>();
list.add(-1L);
for (String id : ids) {
list.add(Long.valueOf(id));
}
return list;
}
/**
* 组装条件
*/
public static List<String> strToList(String str) {
if (isEmpty(str)) {
return null;
}
String[] strs = str.split(",");
return new ArrayList<>(Arrays.asList(strs));
}
/**
* 判断这个Object是否为Null或长度为0
*/
public static boolean isEmpty(Object obj) {
if (obj == null) {
return true;
}
if (obj instanceof Collection) {
return ((Collection<?>) obj).isEmpty();
}
if (obj instanceof String) {
return ((String) obj).equalsIgnoreCase("null")
| ((String) obj).trim().equals("");
}
if (obj instanceof StringBuffer) {
return ((StringBuffer) obj).length() == 0;
}
if (obj.getClass().isArray()) {
try {
Object[] a = (Object[]) obj;
boolean b = true;
for (Object o : a) {
b = isEmpty(o);
if (!b) {
break;
}
}
return b;
} catch (ClassCastException ignored) {
}
}
return false;
}
/**
* 判断这个Object是否不为Null或长度不为0
*/
public static boolean isNotEmpty(Object obj) {
return !isEmpty(obj);
}
/**
* 返回首字母大写单词
*/
public static String lcyFirstLetterToUpper(String str) {
return str.replaceFirst(str.substring(0, 1), str.substring(0, 1)
.toUpperCase());
}
/**
* 转换为下划线
*/
public static String underscoreName(String camelCaseName) {
StringBuilder result = new StringBuilder();
if (camelCaseName != null && camelCaseName.length() > 0) {
result.append(camelCaseName.substring(0, 1).toLowerCase());
for (int i = 1; i < camelCaseName.length(); i++) {
char ch = camelCaseName.charAt(i);
if (Character.isUpperCase(ch)) {
result.append("_");
result.append(Character.toLowerCase(ch));
} else {
result.append(ch);
}
}
}
return result.toString();
}
/**
* 转换为驼峰
*/
public static String camelCaseName(String underscoreName) {
StringBuilder result = new StringBuilder();
if (underscoreName != null && underscoreName.length() > 0) {
boolean flag = false;
for (int i = 0; i < underscoreName.length(); i++) {
char ch = underscoreName.charAt(i);
if ("_".charAt(0) == ch) {
flag = true;
} else {
if (flag) {
result.append(Character.toUpperCase(ch));
flag = false;
} else {
result.append(ch);
}
}
}
}
return result.toString();
}
}
再也不用修改XML了
使用