Java代码解析:生成SQL WHERE子句的方法
该代码段是一个Java方法,用于将传入的查询参数转化为SQL WHERE子句,以便在SQL语句中进行条件查询。具体功能如下:
-
接受三个参数:
Map<String,String> query(查询参数)、Boolean like(是否使用模糊查询)、String sqlwhere(额外的SQL WHERE子句)。 -
如果查询参数
query不为空,则将每个参数拼接到SQL WHERE子句中。如果参数名包含MIN_或MAX_,则表示这是一个区间查询参数,需要分别用大于等于和小于等于进行拼接;如果like参数为true,则表示需要进行模糊查询,否则进行精确查询。 -
如果额外的SQL WHERE子句
sqlwhere不为空,则将其拼接到SQL WHERE子句中。 -
最后返回拼接好的SQL WHERE子句,如果查询参数为空且额外的SQL WHERE子句也为空,则返回空字符串。
public String toWhereSql(Map<String,String> query, Boolean like,String sqlwhere) {
if (query.size() > 0) {
try {
StringBuilder sql = new StringBuilder(" WHERE ");
for (Map.Entry<String, String> entry : query.entrySet()) {
if (entry.getKey().contains(FindConfig.MIN_)) {
String min = humpToLine(entry.getKey()).replace("_min", "");
sql.append("\""+min+"\"").append(" >= '").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("'").append(" and ");
continue;
}
if (entry.getKey().contains(FindConfig.MAX_)) {
String max = humpToLine(entry.getKey()).replace("_max", "");
sql.append("\""+max+"\"").append(" <= '").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("'").append(" and ");
continue;
}
if (like == true) {
sql.append("\""+humpToLine(entry.getKey())+"\"").append(" LIKE '%").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("%").append(" and ");
} else {
sql.append("\""+humpToLine(entry.getKey())+"\"").append(" = '").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("'").append(" and ");
}
}
if (sqlwhere!=null && !sqlwhere.trim().equals("")) {
sql.append(sqlwhere).append(" and ");
}
sql.delete(sql.length() - 4, sql.length());
sql.append(" ");
return sql.toString();
} catch (UnsupportedEncodingException e) {
log.info("拼接sql 失败:{}", e.getMessage());
}
}else {
if (sqlwhere!=null && !sqlwhere.trim().equals("")) {
StringBuilder sql = new StringBuilder(" WHERE ");
sql.append(sqlwhere);
return sql.toString();
}
}
return "";
}
该代码实现了将查询参数转化为SQL WHERE子句的功能,并支持多种查询方式,在实际开发中可以有效简化SQL语句的编写,提高代码的可读性和可维护性。
原文地址: https://www.cveoy.top/t/topic/nBfF 著作权归作者所有。请勿转载和采集!