Как назначить переменные со значениями из списка? - PullRequest
0 голосов
/ 20 августа 2011

Я выполняю этот код:

int key = 25;
String query = "Select one, two, three, four, five from myTable where key=?";
List<Map<String,Object>> data = jdbcTemplate.queryForList(query, new Object[]{key});

//one is string, two is int, three is character, four is double, five is string
String one = null;
int two = 0;
char three = '\u0000';
double four = 0.0;
String five = null;

Я хочу установить пять переменных выше со значениями, возвращенными в списке.Как?

1 Ответ

1 голос
/ 20 августа 2011

Я на самом деле не использовал JDBCTemplate, но согласно документации , queryForList вернет List из Maps, с ключами в каждом Map, являющимися именами столбцов.

Таким образом, чтобы назначить эти переменные из first возвращенной строки:

Map<String,Object> row = data.get(0);
String one  = (String)row.get("one");

//these will not work -- Integer, Double incompatible with String
/* int two     = ((Integer)row.get("two")).intValue();
double four = ((Double)row.get("four")).doubleValue(); */

//correct method
int two     = Integer.parseInt((String)row.get("two"));
double four = Double.parseDouble((String)row.get("four"));

char three  = ((Character)row.get("three")).charValue();
    String five = (String)row.get("five");

Asвы можете видеть, для типов объектов, вы должны просто иметь возможность приводить.Для примитивов я приводил эквивалент объекта, а затем использовал метод эквивалентного объекта для получения базового примитива (например, для int, приведение к Integer и затем использование intValue).

...