是否可以使用jdbctemplate输出发送到mysql的sql?

发布于 2024-12-20 10:16:41 字数 456 浏览 2 评论 0 原文

可能的重复:
查看 Spring JdbcTemplate 中的底层 SQL?

我正在使用jdbctemplate 像这样:

getJdbcTemplate.update("update ....... values (?,?,?....?)", myObject.getProperty1(), ...);

我是否可以写出发送到 mysql 的结果 sql 的 logger.trace?

这将使我的调试过程更容易,因为我可以准确地看到 mysql 正在得到什么。

Possible Duplicate:
Seeing the underlying SQL in the Spring JdbcTemplate?

I am using jdbctemplate like this:

getJdbcTemplate.update("update ....... values (?,?,?....?)", myObject.getProperty1(), ...);

Is it possible for me to write out a logger.trace of the resulting sql sent to mysql?

It would make my debug process easier as I could see exactly what mysql is getting.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

佞臣 2024-12-27 10:16:41

在 jdbc url 中,您可以动态添加以下属性以启用 mysql 语句日志记录:

jdbc:mysql://localhost:3306/sakila?profileSQL=true

您可以在此处阅读有关此内容的更多信息:

http://dev.mysql.com/doc/connector-j/en/connector-j-reference-configuration-properties.html

阅读“调试/分析”部分中的属性因为这些的组合对于日志级别、日志输出等可以非常灵活。(例如记录器)

另一种方法是使用 jdbc 日志代理库,例如 http://code.google.com/p/log4jdbc/

In your jdbc url, you can dynamically add the following property to enable mysql statement logging:

jdbc:mysql://localhost:3306/sakila?profileSQL=true

You can read more about this here:

http://dev.mysql.com/doc/connector-j/en/connector-j-reference-configuration-properties.html

Read up on the properties in the Debugging/Profiling section as a combination of these can be very flexible for log levels, log output etc. (eg. logger)

Another approach is to use a jdbc logging proxy library such as http://code.google.com/p/log4jdbc/

潇烟暮雨 2024-12-27 10:16:41

JdbcTemplate 在调试级别记录查询。您应该只需要在 org.springframework.jdbc.core.JdbcTemplate 上启用调试日志记录。

您还可以从连接池获取查询日志记录。例如,如果您使用的是 BoneCP,请打开 logStatementsEnabled 并将 com.jolbox.bonecp 记录器设置为在调试级别进行记录。使用 BoneCP 日志记录的优点是您可以获得准备好的语句占位符值。以下是同一查询的输出,显示了差异,其中PreparedStatementHandle 是 BoneCP 类。

[2011-12-11 11:43:25,749] DEBUG Executing prepared SQL query (JdbcTemplate)
[2011-12-11 11:43:25,753] DEBUG Executing prepared SQL statement [select * from player where player_id = ?] (JdbcTemplate)
[2011-12-11 11:43:25,794] DEBUG select * from player where player = 123 (PreparedStatementHandle) 

JdbcTemplate logs queries at debug level. You should just need to enable debug logging on org.springframework.jdbc.core.JdbcTemplate.

You can also get query logging from your connection pool. For example, if you're using BoneCP, turn on logStatementsEnabled and set your com.jolbox.bonecp logger to log at the debug level. The advantage of using BoneCP's logging is that you get prepared statement placeholder values. Here's the output for the same query showing the difference, where PreparedStatementHandle is a BoneCP class.

[2011-12-11 11:43:25,749] DEBUG Executing prepared SQL query (JdbcTemplate)
[2011-12-11 11:43:25,753] DEBUG Executing prepared SQL statement [select * from player where player_id = ?] (JdbcTemplate)
[2011-12-11 11:43:25,794] DEBUG select * from player where player = 123 (PreparedStatementHandle) 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文