queryForMap
подходит, если вы хотите получить один ряд. Вы выбираете без предложения where
, так что вы, вероятно, хотите queryForList
. Ошибка, вероятно, свидетельствует о том, что queryForMap
требуется одна строка, но ваш запрос извлекает много строк.
Ознакомьтесь с документами. Существует queryForList
, который занимает только sql; тип возвращаемого значения -
List
.
Итак, когда у вас есть результаты, вы можете делать то, что делаете. Я хотел бы сделать что-то вроде
List results = template.queryForList(sql);
for (Map m : results){
m.get('userid');
m.get('username');
}
Я позволю вам заполнить детали, но я бы не стал перебирать ключи в этом случае. Мне нравится подробно рассказывать о том, что я ожидаю.
Если у вас есть объект User
, и вы действительно хотите загрузить пользовательские экземпляры, вы можете использовать queryForList
, который принимает sql, и тип класса
queryForList(String sql, Class
(Вау, весна сильно изменилась с тех пор, как я покинул Джаваланд.)
bison
да, flex
нет. Однажды мне понадобился синтаксический анализатор bison для работы с файлами в кодировке UTF-8, и я написал свою собственную функцию yylex
.
edit : Чтобы помочь, я использовал множество операций Unicode, доступных в glib (есть тип gunicode
и некоторые функции манипулирования файлами / строками, которые я нашел полезными ).