动态 SQL 查询生成器 - Java 8
温馨提示:
本文最后更新于 2024年04月12日,已超过 37 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
Created SQL Query Builders but I'm not satisfied with the end result:
Query for select:
public static String constructSelectSqlQuery(String table, String[] columns, String conditionColumn) {
if (isNullOrEmpty(table)) {
LOGGER.warn("Table name is empty.");
return "";
}
if (columns == null || columns.length == 0) {
LOGGER.warn("Columns array is empty.");
return "";
}
if (isNullOrEmpty(conditionColumn)) {
LOGGER.warn("Condition Column is empty");
return "";
}
String columnList = String.join(", ", columns);
return String.format("SELECT %s FROM %s WHERE %s = ?;", columnList, table, conditionColumn);
}
Query for update:
public static String constructUpdateSqlQuery(String table, String[] columns, String[] values, String pk, int id) {
if (isNullOrEmpty(table) || isInvalidParameters(columns, values)) {
LOGGER.warn("Invalid parameters");
return "";
}
StringBuilder setClause = new StringBuilder();
for (int i = 0; i < columns.length; i++) {
if ("data_fase".equals(columns[i]) && "current".equalsIgnoreCase(values[i])) {
setClause.append(columns[i]).append(" = current");
} else {
setClause.append(columns[i]).append(" = ?");
}
if (i < columns.length - 1) {
setClause.append(", ");
}
}
return String.format("UPDATE %s SET %s WHERE %s = %d;", table, setClause.toString(), pk, id);
}
Query for insert:
public static String constructInsertSqlQuery(String table, String[] columns, String[] values) {
if (isNullOrEmpty(table) || isInvalidParameters(columns, values)) {
LOGGER.warn("Invalid parameters");
return "";
}
StringBuilder columnList = new StringBuilder();
StringBuilder valueList = new StringBuilder();
for (int i = 0; i < columns.length; i++) {
columnList.append(columns[i]);
if ("current".equalsIgnoreCase(values[i])) {
valueList.append("current");
} else {
valueList.append("?");
}
if (i < columns.length - 1) {
columnList.append(", ");
valueList.append(", ");
}
}
return String.format("INSERT INTO %s (%s) VALUES (%s);", table, columnList.toString(), valueList.toString());
}
Instead of these 3 separate queries is there any way to create one Dynamic SQL Query Builder?
What other optimizations can be applied?
正文到此结束
- 本文标签: 家庭宠物
- 本文链接: https://www.coder6.net/article/2403
- 版权声明: 本文由蚂蚁原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权