2016-11-04 21 views
1

準備された文でSpring JdbcTemplateを使用する場合、パラメータの値を個別に設定するか、オブジェクトの配列を渡すだけです。spring JdbcTemplateがどのようにデータ型を認識しますか?

jdbctemplate.update(sql, arg1, arg2); 

又は

jdbctemplate.update(sql, new Object[]{arg1, arg2}); 

方法の両方が働いています。しかし、私は、jdbctemplateがObject配列として渡されたときにデータベース列の型と一致するようにデータをキャストする方法を知りたいと思います。

2つの方法でパフォーマンスが違いますか?

データベースで実行された最終クエリをどのようにログに記録できますか。 org.springframework.jdbcパッケージのDEBUGログを有効にすることができませんでした。

答えて

2

JdbcTemplate.updateへの2つの呼び出しの間に違いはありません。どちらの呼び出しも同じ方法になります。あなたは最後の引数は、Java可変引数(...)ではない配列で見ることができるように、次のシグネチャ

public int update(String sql, Object... args) throws DataAccessException 

を持ってJdbcTemplate

で唯一update方法があります。したがって、個々の値またはObject配列を同じVariable Argumentに渡すことができます。どのようJdbcTemplateのご質問については

は、先のデータ型と一致するデータをキャストするために知っている、それだけでPreparedStatementを作成し、与えられた値かどうかを提出可変引数と値と実際にだけチェックの順に基づいて、PreparedStatement.set***メソッドを呼び出しますString,DateまたはCalendarであり、PreparedStatement.setStringまたはPreparedStatement.setTimestampを呼び出します。それ以外はすべてPreparedStatement.setObject

+0

詳細な回答ありがとうございました。最後にロギングに関する質問に答えてくれますか? –

関連する問題