是否有一种方法可以在Java中以字符串数组的形式创建表单作弊?
此数组将保存稍后要执行的所有查询,以进行 CRUD 操作。
我知道在javascript中我们可以做到这一点:
export default queryArray = {
"INSERT" : "INSERT INTO TABLE (id,name,age) VALUES (NULL,"alex",23)",
"SELECT" : "SELECT * FROM TABLE"
}
然后我们可以像这样使用它:
queryArray [“ INSERT”] ...
这在Java中可以实现吗?
答案 0 :(得分:1)
您使用的数据结构是一个映射,Java使用HashMap
类提供了一个实现。结合静态字段,您可以实现这一目标。
答案 1 :(得分:1)
Java的JS片段中没有类似的示例。
但是,您的问题的解决方案1 可以与Map<Key, Value>
一起使用。
Key
将进行 CRUD 操作并为相应的 SQL命令赋值。
为方便起见,我建议为您的 SQL密钥创建enum。
您可以在此处使用EnumMap。这是一个典型的映射,其键为枚举常量。
我提醒解决方案2 更加容易,您可以只使用枚举,该枚举将为每个常量保留适当的值。
代码如下:
import java.util.EnumMap;
import java.util.Map;
enum SqlCommands {
SELECT("SELECT * FROM ?"),
INSERT("INSERT INTO ?() VALUES()"),
UPDATE("UPDATE ? SET ?=? WHERE ?"),
DELETE("DELETE FROM ? WHERE ?");
private String sqlOperation;
SqlCommands(String sqlOperation) {
this.sqlOperation = sqlOperation;
}
public String getSqlOperation() {
return sqlOperation;
}
}
public class SqlTemplatesDemo {
public static final EnumMap<SqlCommands, String> map = new EnumMap<>(SqlCommands.class);
static {
map.put(SqlCommands.SELECT, "SELECT * FROM ?");
map.put(SqlCommands.INSERT, "INSERT INTO ?() VALUES()");
map.put(SqlCommands.UPDATE, "UPDATE ? SET ?=? WHERE ?");
map.put(SqlCommands.DELETE, "DELETE FROM ? WHERE ?");
}
public static void main(String[] args) {
System.out.println("Solution 1:");
for (Map.Entry<SqlCommands, String> entry : map.entrySet()) {
System.out.printf("Key: [%s] for value: [%s]\n", entry.getKey(), entry.getValue());
}
System.out.println("\nSolution 2:");
for (SqlCommands sqlCommand : SqlCommands.values()) {
System.out.printf("Enum key: [%s], and value: [%s]\n", sqlCommand, sqlCommand.getSqlOperation());
}
}
}
输出:
Solution 1:
Key: [SELECT] for value: [SELECT * FROM ?]
Key: [INSERT] for value: [INSERT INTO ?() VALUES()]
Key: [UPDATE] for value: [UPDATE ? SET ?=? WHERE ?]
Key: [DELETE] for value: [DELETE FROM ? WHERE ?]
Solution 2:
Enum key: [SELECT], and value: [SELECT * FROM ?]
Enum key: [INSERT], and value: [INSERT INTO ?() VALUES()]
Enum key: [UPDATE], and value: [UPDATE ? SET ?=? WHERE ?]
Enum key: [DELETE], and value: [DELETE FROM ? WHERE ?]
答案 2 :(得分:0)
仅出于完整性考虑,我想提一下Java 9+提供了一种构建类似于js代码段的地图的便捷方法:
static final Map<String, String> SQL_CHEAT_SHEET = Map.of(
"INSERT", "INSERT INTO ...",
"SELECT", "SELECT FROM ..."
);