java中进行增删改查的动态sql生成代码
时间: 2024-04-10 11:34:51 浏览: 127
java代码-使用java在Maven下用Spring+mysql 实现增删查改的源代码
以下是一个简单的Java动态SQL生成代码示例,用于进行增删改查操作:
```java
import java.util.Map;
public class DynamicSqlGenerator {
public String generateInsertSql(String tableName, Map<String, Object> data) {
StringBuilder builder = new StringBuilder();
builder.append("INSERT INTO ").append(tableName).append(" (");
StringBuilder valuesBuilder = new StringBuilder();
valuesBuilder.append("VALUES (");
for (String column : data.keySet()) {
builder.append(column).append(", ");
valuesBuilder.append(":").append(column).append(", ");
}
// 移除最后一个逗号和空格
builder.delete(builder.length() - 2, builder.length());
valuesBuilder.delete(valuesBuilder.length() - 2, valuesBuilder.length());
builder.append(") ").append(valuesBuilder).append(")");
return builder.toString();
}
public String generateUpdateSql(String tableName, Map<String, Object> data, Map<String, Object> condition) {
StringBuilder builder = new StringBuilder();
builder.append("UPDATE ").append(tableName).append(" SET ");
for (String column : data.keySet()) {
builder.append(column).append(" = :").append(column).append(", ");
}
// 移除最后一个逗号和空格
builder.delete(builder.length() - 2, builder.length());
if (!condition.isEmpty()) {
builder.append(" WHERE ");
for (String column : condition.keySet()) {
builder.append(column).append(" = :").append(column).append(" AND ");
}
// 移除最后一个AND和空格
builder.delete(builder.length() - 5, builder.length());
}
return builder.toString();
}
public String generateDeleteSql(String tableName, Map<String, Object> condition) {
StringBuilder builder = new StringBuilder();
builder.append("DELETE FROM ").append(tableName);
if (!condition.isEmpty()) {
builder.append(" WHERE ");
for (String column : condition.keySet()) {
builder.append(column).append(" = :").append(column).append(" AND ");
}
// 移除最后一个AND和空格
builder.delete(builder.length() - 5, builder.length());
}
return builder.toString();
}
public String generateSelectSql(String tableName, Map<String, Object> condition) {
StringBuilder builder = new StringBuilder();
builder.append("SELECT * FROM ").append(tableName);
if (!condition.isEmpty()) {
builder.append(" WHERE ");
for (String column : condition.keySet()) {
builder.append(column).append(" = :").append(column).append(" AND ");
}
// 移除最后一个AND和空格
builder.delete(builder.length() - 5, builder.length());
}
return builder.toString();
}
}
```
在这个示例中,`DynamicSqlGenerator` 类包含了四个方法分别用于生成插入、更新、删除和查询的动态SQL语句。这些方法接收表名和数据/条件的映射,然后通过拼接字符串生成相应的SQL语句。
例如,调用 `generateInsertSql` 方法可以生成插入数据的SQL语句,调用 `generateUpdateSql` 方法可以生成更新数据的SQL语句,调用 `generateDeleteSql` 方法可以生成删除数据的SQL语句,调用 `generateSelectSql` 方法可以生成查询数据的SQL语句。
在生成SQL语句时,使用了占位符 `:columnName` 来表示参数,以防止SQL注入攻击。生成的SQL语句中会包含相应的表名、字段名和对应的占位符,以及相应的条件语句(如果有)。
请注意,这只是一个简单的示例,实际使用中可能需要根据具体的需求进行适当的修改和扩展。
阅读全文