0

我正在运行此代码:

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;

我想用列表中返回的值设置上面的五个变量。如何?

4

1 回答 1

1

我实际上并没有使用过JDBCTemplate,但根据文档queryForList将返回 a Listof Maps,每个Map中的键都是列的名称。

因此,要从第一个返回的行中分配这些变量

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");

如您所见,对于对象类型,您应该只能进行强制转换。对于原语,我已经转换为对象等价物,然后使用该对象等价物的方法来获取底层原语(因此 for int,转换为Integer然后使用intValue)。

于 2011-08-20T05:52:51.533 回答