在Java中创建常见的SQL操作?

时间:2018-10-13 13:09:58

标签: javascript java

是否有一种方法可以在Java中以字符串数组的形式创建表单作弊?

此数组将保存稍后要执行的所有查询,以进行 CRUD 操作。

  

我知道在javascript中我们可以做到这一点:

export default queryArray = {
   "INSERT" : "INSERT INTO TABLE (id,name,age) VALUES (NULL,"alex",23)",
   "SELECT" : "SELECT * FROM TABLE"
  }

然后我们可以像这样使用它:

  

queryArray [“ INSERT”] ...

这在Java中可以实现吗?

3 个答案:

答案 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 ..."
);