有没有办法在Java中以字符串数组的形式创建表单作弊?
该数组将保存稍后将用于CRUD操作的所有查询。
我知道在javascript中我们可以做到这一点:
export default queryArray = {
"INSERT" : "INSERT INTO TABLE (id,name,age) VALUES (NULL,"alex",23)",
"SELECT" : "SELECT * FROM TABLE"
}
然后我们可以像这样使用它:
queryArray [“ INSERT”] ...
这在Java中可以实现吗?
最佳答案
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 ?]