有没有办法在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 ?]

10-07 21:36