我需要从NamedParameterJdbcTemplate获取发送到数据库的最终sql查询。例如:
Select * from tbl where name = :name
我需要这样的东西:
Select * from tbl where name ='mark'
非常感谢
答案 0 :(得分:2)
快速查看at the source code
https://github.com/spring-projects/spring-framework/blob/master/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterJdbcTemplate.java所有查询都通过'getParsedSql' method和NamedParameterUtils
进行解析。
Select * from tbl where name = :name
可能会被翻译成类似
的内容Select * from tbl where name = ?
参数将作为单独的对象提供,因为这就是JDBC的工作方式。
如果您只想检查语句,可以添加一些断点并查看。如果您想要实际获取值,您可以通过反射或实际使用您自己的'NamedparameterJdbcTemplate'版本来更改代码,使其可访问;
请注意,您可能无法看到您的期望。