JdbcTemplate と NamedParameterJdbcTemplate の素晴らしさについて学んでいます。表示される内容は気に入っていますが、最終的に実行される基になる SQL を確認する簡単な方法はありますか? デバッグ目的でこれを見たいと思います(たとえば、結果のSQLを外部ツールでデバッグするため)。
8 に答える
Springのドキュメントには、DEBUG レベルでログに記録されると記載されています。
このクラスによって発行されたすべての SQLは、テンプレート インスタンスの完全修飾クラス名(通常は JdbcTemplate ですが、JdbcTemplate クラスのカスタム サブクラスを使用している場合は異なる場合があります) に対応するカテゴリの下のDEBUGレベルでログに記録されます。
XML 用語では、ロガーを次のように構成する必要があります。
<category name="org.springframework.jdbc.core.JdbcTemplate">
<priority value="debug" />
</category>
ただし、この主題は 1 か月前にここで議論されており、 Hibernateのように作業を開始するのは簡単ではないか、期待される情報が返されませんでした: Spring JDBC は log4j で SQL をログに記録していません。この記事に従ってSpringに統合することもできます。
これは、org.springframework.jdbc-3.0.6.RELEASE.jar で機能します。これはSpringのドキュメントのどこにも見つかりませんでした(たぶん私は怠け者かもしれません)が、(試行錯誤して)TRACEレベルが魔法のように機能することがわかりました。
log4j-1.2.15 を slf4j (1.6.4) およびプロパティ ファイルと共に使用して、log4j を構成しています。
log4j.logger.org.springframework.jdbc.core = TRACE
これにより、SQL ステートメントとバインドされたパラメーターの両方が次のように表示されます。
Executing prepared SQL statement [select HEADLINE_TEXT, NEWS_DATE_TIME from MY_TABLE where PRODUCT_KEY = ? and NEWS_DATE_TIME between ? and ? order by NEWS_DATE_TIME]
Setting SQL statement parameter value: column index 1, parameter value [aaa], value class [java.lang.String], SQL type unknown
Setting SQL statement parameter value: column index 2, parameter value [Thu Oct 11 08:00:00 CEST 2012], value class [java.util.Date], SQL type unknown
Setting SQL statement parameter value: column index 3, parameter value [Thu Oct 11 08:00:10 CEST 2012], value class [java.util.Date], SQL type unknown
SQL の型が不明なのかどうかはわかりませんが、ここでは無視できると思います
SQL だけの場合 (つまり、バインドされたパラメーター値に関心がない場合)DEBUG
で十分です。
パラメータ値は TRACE レベルに出力されるようです。これは私のために働いた:
log4j.logger.org.springframework.jdbc.core.JdbcTemplate=DEBUG, file
log4j.logger.org.springframework.jdbc.core.StatementCreatorUtils=TRACE, file
コンソール出力:
02:40:56,519 TRACE http-bio-8080-exec-13 core.StatementCreatorUtils:206 - Setting SQL statement parameter value: column index 1, parameter value [Tue May 31 14:00:00 CEST 2005], value class [java.util.Date], SQL type unknown
02:40:56,528 TRACE http-bio-8080-exec-13 core.StatementCreatorUtils:206 - Setting SQL statement parameter value: column index 2, parameter value [61], value class [java.lang.Integer], SQL type unknown
02:40:56,528 TRACE http-bio-8080-exec-13 core.StatementCreatorUtils:206 - Setting SQL statement parameter value: column index 3, parameter value [80], value class [java.lang.Integer], SQL type unknown