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;

リストに返された値を使用して、上記の 5 つの変数を設定したいと考えています。どのように?

4

1 に答える 1

1

私は実際には を使用していませんが、ドキュメントJDBCTemplateよると、はのを返し、それぞれのキーは列の名前です。queryForListListMapMap

したがって、最初に返された行からこれらの変数を割り当てるには:

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

ご覧のとおり、オブジェクト型については、キャストできるはずです。プリミティブについては、同等のオブジェクトにキャストしてから、その同等のオブジェクトのメソッドを使用して、基になるプリミティブを取得しました (つまり、 forintにキャストしてからIntegerを使用しますintValue)。

于 2011-08-20T05:52:51.533 に答える