У меня есть небольшое приложение, написанное в scala, которое отправляет запрос в mysql, получает результат, а затем конвертирует его в json и отправляет на какой-то http-сервер. Я использую java jdbc и mysql-коннектор для подключения к базе данных и спрей-json для коллекции scala для преобразования json. Итак, я создаю соединение с db, выполняю запрос, а затем получаю результат с getResultSet()
. Тогда я итерация через него, и скопировать результат в изменяемый карте:Как преобразовать результаты jdbc в неизменяемую коллекцию
while(result.next()) {
val SomeExtractor(one, two) = result
map.update(one, map.getOrElse(one, List()) ::: List(two))
}
Это прекрасно работает, но тогда я должен конвертировать результат в непреложную карту, причина распыление JSON не может преобразовать изменяемые коллекции в формат JSON, НАСКОЛЬКО МНЕ ИЗВЕСТНО. Есть ли хороший способ конвертировать результат jdbc здесь в неизменную коллекцию, не перебирая ее на временную изменчивую карту? Может быть, можно каким-то образом использовать потоки? Я спрашиваю, потому что похоже, что для этого должен быть какой-то классный функциональный шаблон, о котором я понятия не имею.
p.s. Кстати, я не могу просто использовать Slick, потому что он не поддерживает хранимые процедуры AFAIK.
Могу ли я направить вас на интерфейс JDBC Scala, который позволит вам использовать 'toList' для возврата из запросов и поддерживает хранимые процедуры? https://github.com/novus/novus-jdbc (я написал его, пока я там работал). – wheaties
@wheaties Спасибо, могу ли я получить эту библиотеку из maven repo с помощью sbt? –
Знаете, это могло бы помочь, если бы я сделал его доступным для скачивания, но я добрался до этого момента и никогда не публиковал его за пределами компании Maven. – wheaties