Я создаю модель на основе агента в Anylogic 8.7. Есть момент, когда я хочу использовать запрос для получения списка значений из таблицы базы данных (rs_table) с условием, вот код Java, который anylogic пишет в указанном месте:
(int) selectFrom(rs_table) .where(rs_table.tr.eq(1)) .list(rs_table.impact)
но я не знаю, как хранить эти значения и как достигать их по одному. Буду признателен, если вы мне поможете спасибо.
Я бы использовал сборник. Добавьте элемент коллекции из паллеты «Агент». Коллекция должна иметь следующие свойства:
Используйте следующий код:
collection.addAll(
selectFrom(rs_table) .where(rs_table.tr.eq(1)) .list(rs_table.impact)
);
Теперь вы можете получить доступ к значению из коллекции следующим образом:
collection.get(i);
Опция «Перебрать возвращенные строки и сделать что-нибудь» мастера вставки запросов к базе данных как раз предназначена для этого. Он создает код запроса, который перебирает возвращенный список и выводит значение каждого столбца на консоль (через вызов 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
объектов, как показано в коде.)
Спасибо за ваш ответ, он помог мне в этом процессе, но теперь я хочу сделать этот запрос динамическим, используя переменную в качестве условия, например: collection.addAll(selectFrom(rs_table).where(rs_table.tr.eq(Tr)) .list(rs_table.impact)); Я использовал переменную «Tr» в качестве условия для запроса, но теперь я получаю исключение Nullpointer при запуске модели. Можно ли встроить эту динамическую функцию в запрос?