Как сохранить перечисленные значения из базы данных в переменные в Anylogic 8.7.1?

Я создаю модель на основе агента в Anylogic 8.7. Есть момент, когда я хочу использовать запрос для получения списка значений из таблицы базы данных (rs_table) с условием, вот код Java, который anylogic пишет в указанном месте:

(int) selectFrom(rs_table) .where(rs_table.tr.eq(1)) .list(rs_table.impact)

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
592
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Я бы использовал сборник. Добавьте элемент коллекции из паллеты «Агент». Коллекция должна иметь следующие свойства:

  • Класс коллекции: LinkedList
  • Класс элемента: Int

Используйте следующий код:

collection.addAll(
selectFrom(rs_table) .where(rs_table.tr.eq(1)) .list(rs_table.impact)
);

Теперь вы можете получить доступ к значению из коллекции следующим образом:

collection.get(i);

Спасибо за ваш ответ, он помог мне в этом процессе, но теперь я хочу сделать этот запрос динамическим, используя переменную в качестве условия, например: collection.addAll(selectFrom(rs_table).where(rs_table.tr.eq(Tr)) .list(rs_table.impact)); Я использовал переменную «Tr» в качестве условия для запроса, но теперь я получаю исключение Nullpointer при запуске модели. Можно ли встроить эту динамическую функцию в запрос?

Pouya Behravesh 24.12.2020 10:56

Опция «Перебрать возвращенные строки и сделать что-нибудь» мастера вставки запросов к базе данных как раз предназначена для этого. Он создает код запроса, который перебирает возвращенный список и выводит значение каждого столбца на консоль (через вызов traceln); вы просто заменяете код в цикле тем, что вы действительно хотите сделать для каждой возвращаемой строки (где код шаблона показывает вам, как получить значение каждого столбца в строке).

Мастер (если вы используете форму QueryDSL) создаст код, как показано ниже:

List<Tuple> rows = selectFrom(rs_table)
    .where(rs_table.tr.eq(1))
    .list();

for (Tuple row : rows) {
    traceln(
        row.get( rs_table.tr ) + "\t" + 
        row.get( rs_table.impact )
    );
}

(с дополнительными строками row.get для любых других столбцов таблицы, кроме tr и impact).

(В терминах Java функция list запроса возвращает List из Tuple объектов, как показано в коде.)

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