使用StringBuilder写一个动态拼接SQL语句的方法,入参为表名、列名、条件列名,同时校验参数的合法性

动态 未结 0 111
小小草
小小草 LV1 2023年9月23日 23:40 发表
以下是一个使用StringBuilder动态拼接SQL语句的方法,可以根据传入的表名、列名和条件列名生成对应的SQL语句,并且会对输入参数进行合法性校验: ```java public static String generateSql(String tableName, List columns, List conditionColumns) throws IllegalArgumentException { // 校验参数是否为空或者包含非法字符 if (StringUtils.isBlank(tableName) || !tableName.matches("[a-zA-Z0-9_]+")) { throw new IllegalArgumentException("Invalid table name: " + tableName); } if (columns == null || columns.isEmpty()) { throw new IllegalArgumentException("Columns cannot be empty"); } for (String column : columns) { if (StringUtils.isBlank(column) || !column.matches("[a-zA-Z0-9_]+")) { throw new IllegalArgumentException("Invalid column name: " + column); } } if (conditionColumns != null && !conditionColumns.isEmpty()) { for (String conditionColumn : conditionColumns) { if (StringUtils.isBlank(conditionColumn) || !conditionColumn.matches("[a-zA-Z0-9_]+")) { throw new IllegalArgumentException("Invalid condition column name: " + conditionColumn); } } } StringBuilder sql = new StringBuilder(); // 拼接SELECT语句 sql.append("SELECT "); for (int i = 0; i < columns.size(); i++) { sql.append(columns.get(i)); if (i != columns.size() - 1) { sql.append(", "); } } // 拼接FROM语句 sql.append(" FROM "); sql.append(tableName); // 拼接WHERE语句 if (conditionColumns != null && !conditionColumns.isEmpty()) { sql.append(" WHERE "); for (int i = 0; i < conditionColumns.size(); i++) { sql.append(conditionColumns.get(i)); sql.append(" = ?"); if (i != conditionColumns.size() - 1) { sql.append(" AND "); } } } return sql.toString(); } ``` 这个方法与之前的方法类似,不同之处在于我们添加了参数校验的逻辑。在方法中,我们首
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复