以下是一个使用StringBuilder动态拼接SQL语句的方法,可以根据传入的表名、列名和条件列名生成对应的SQL语句:
```java
public static String generateSql(String tableName, List columns, List conditionColumns) {
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();
}
```
这个方法接收三个参数:表名、列名和条件列名。其中,列名和条件列名都是字符串列表,可以包含多个列名。
在方法中,我们首先创建了一个StringBuilder对象,用于动态拼接SQL语句。然后,我们先拼接SELECT语句,将所有列名拼接到一起。接着,我们拼接FROM语句,指定要查询的表名。最后,如果有条件列名,我们就拼接WHERE语句,并将条件列名和占位符拼接到一起。
需要注意的是,这个方法只是一个示例,实际使用时可能需要根据具体情况进行修改。例如,如果要支持更多的SQL语句类型,就需要在方法中添加对应的拼接逻辑。同时,为了防止SQL注入攻击,我们还需要对输入参数进行验证和过滤。