Создавать общие операции SQL в Java?

Есть ли способ создать чит-лист в виде массива строк в Java?

Этот массив будет содержать все запросы, которые будут выполняться позже, для операций CRUD.

I know in javascript we can do this :

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

И тогда мы можем использовать это так:

queryArray["INSERT"]...

Возможно ли это на Java?

Вы можете использовать для этого карту. Если вы хотите сохранить порядок, перейдите на LinkedHashMap.

Pushpesh Kumar Rajwanshi 13.10.2018 15:13

Да, используйте коллекцию Java Map. Но я ничего не могу поделать с LOLing DRY и повторным использованием программного обеспечения. Почему бы вместо этого не использовать общий модуль, который контролирует весь ваш код DAO?

Randy Casburn 13.10.2018 15:13

мы собираемся использовать DAO, мы просто хотим добавить упомянутое выше, чтобы в основном централизовать все наши запросы, применяя концепцию «написать один раз, использовать везде», также будет очень легко поддерживать все эти запросы, особенно когда проект становится все больше и больше.

oflcad 13.10.2018 15:16

Карта - хороший вариант. Вы также можете использовать Enum.

c0der 13.10.2018 15:21
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
91
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Используемая вами структура данных представляет собой карту, а Java предоставляет реализацию с классом HashMap. В сочетании со статическими полями вы можете этого добиться.

Ответ принят как подходящий

У Java нет чего-то вроде примера из вашего JS-фрагмента.

Однако Решение 1 на ваш вопрос можно сделать с Map<Key, Value>.
Где Key будет операцией CRUD и соответствующим значением Команда SQL.

Для удобства предлагаю создать перечислить для вашего Ключи SQL.
Вы можете использовать здесь EnumMap. Это типичная карта, в которой ключ является константой перечисления.

Напоминаю, что Решение 2 еще проще: вы можете использовать просто enum, которое будет содержать соответствующее значение для каждой константы.

Код будет выглядеть примерно так:

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 ?]

Для полноты картины я хотел бы упомянуть, что java 9+ предоставляет удобный способ создания карты, похожей на ваш фрагмент js:

static final Map<String, String> SQL_CHEAT_SHEET = Map.of(
    "INSERT", "INSERT INTO ...",
    "SELECT", "SELECT FROM ..."
);

Другие вопросы по теме