Когда я запрашиваю базу данных и получаю обратно (только для пересылки, только для чтения) ResultSet, ResultSet действует как список строк базы данных.
Я пытаюсь найти способ обработать этот ResultSetкак скала Stream
.Это позволит выполнять такие операции, как filter
, map
и т. Д., При этом не потребляя большого объема оперативной памяти.
Я реализовал хвост-рекурсивный метод для извлечения отдельных элементов, но для этого требуется, чтобы все элементыбыть в памяти одновременно, проблема, если ResultSet очень большой:
// Iterate through the result set and gather all of the String values into a list
// then return that list
@tailrec
def loop(resultSet: ResultSet,
accumulator: List[String] = List()): List[String] = {
if (!resultSet.next) accumulator.reverse
else {
val value = resultSet.getString(1)
loop(resultSet, value +: accumulator)
}
}