0

この形式のクエリは、データベース呼び出しから単一の値/単一の行を返すのに非常に便利であり、何か問題がある場合は例外をスローしても問題ありません。しかし、キャストを行うことは一般的に悪い習慣であると頭の中で考えています。

ここのキャストは眉をひそめていますか?

String name = (String)getJdbcTemplate().queryForObject(
        sql, new Object[] { custId }, String.class);
4

2 に答える 2

1

Spring 3.1 以降、JdbcTemplateはqueryForObjectでジェネリックと可変引数を使用できます。

String name = getJdbcTemplate().queryForObject(sql, String.class, custId);

Spring 3.1 より前は、これは getSimpleJdbcTemplate() を通じて利用可能でした

String name = getSimpleJdbcTemplate().queryForObject(sql, String.class, custId);

編集:

これには JDK 1.5 以降が必要です。

于 2013-03-14T16:25:20.203 に答える
0

Spring の最近のバージョンを使用している場合は、キャストする必要はありません。これはジェネリック メソッドであり、メソッドのシグネチャが次のようになっているためです。

public <T> T queryForObject(String sql, Class<T> requiredType) throws DataAccessException

古いバージョンを使用している場合は、キャストするか、最新バージョンにアップグレードしてください。

于 2013-03-14T16:25:57.913 に答える