1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/selfly-sonsure-dumper

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
param-handler.md 3.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 13:43 e04b5c0

Обработка специальных параметров

При использовании этой функции в качестве параметра передаётся не конкретное значение, а класс-реализация NamedParamHandler.

Рассмотрим пример использования:

  • Конкретное количество полей, которые необходимо обновить в рамках бизнес-процесса, неизвестно и определяется сотрудниками, работающими с интерфейсом.
  • Значения для обновления выбираются случайным образом из определённого диапазона и также определяются сотрудниками, работающими с интерфейсом (они могут писать код, подобный SQL).
  • Для каждой строки обновляемых данных требуется уникальное значение. Например, при обновлении 1000 строк данных потребуется 1000 уникальных случайных значений.

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

Определение интерфейса NamedParamHandler

Этот тип поддерживает только именованный способ работы (paramName соответствует имени параметра в SQL), и класс-реализация может генерировать нужное значение на основе этого имени.

public interface NamedParamHandler {

    /**
     * При именованном способе можно генерировать значения по своему усмотрению, например случайные числа.
     * Возвращаемое значение должно быть простым типом, поддерживаемым JDBC для передачи параметров, и не может быть списком, массивом или другим сложным объектом.
     *
     * @param paramName имя параметра
     * @return значение
     */
    Object getValue(String paramName);
}

Пример

Ниже представлен пример реализации генератора случайных чисел JdbcRandomNamedParamHandler, который генерирует значения в диапазоне от 10 до 30. Более подробно можно ознакомиться с исходным кодом класса JdbcRandomNamedParamHandler:

String sql = "insert into UserInfo(userInfoId,loginName,password,userAge) values(:userInfoId,:loginName,:password,:random_z10_z30)";

for (int i = 0; i < 10; i++) {
    jdbcDao.nativeExecutor()
            .namedParameter()
            .command(sql)
            .parameter("userInfoId", 99L + i)
            .parameter("loginName", "newName")
            .parameter("password", "123456")
            .parameter("random_z10_z30", new JdbcRandomNamedParamHandler())
            .insert();
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/selfly-sonsure-dumper.git
git@api.gitlife.ru:oschina-mirror/selfly-sonsure-dumper.git
oschina-mirror
selfly-sonsure-dumper
selfly-sonsure-dumper
master