如何使用JdbcTemplate和BeanPropertySqlParameterSource获取具有替换值的sql?

时间:2014-03-07 13:13:31

标签: spring jdbc spring-jdbc jdbctemplate

我通过执行jdbc.update(sql,params)得到一个错误,我希望看到正在执行jdbc.update的sql,而是使用最终值:执行前在sql中的param。 / p>

是否有任何JdbcTemplate方法允许这样做?

public boolean create(User user) {
    BeanPropertySqlParameterSource params = 
        new BeanPropertySqlParameterSource(user);

    String sql = "INSERT INTO t_user (username, password, email)"
        + " VALUES (:username, :password, :email)";

    return jdbc.update(sql, params) == 1;
}

我需要获取将执行jdbcTemplate的sql,它类似于

INSERT INTO t_user (username, password, email)
       VALUES ("name", "password", "joe@mail.com")

我需要这个来检查sql是否正确,因为我有太多参数可以手工完成所有这些。

1 个答案:

答案 0 :(得分:0)

这是我在代码中的方式

String DELETE_BY_ID_QUERY = "delete from my_table where id = ?";
....
String id ="a123";

getJdbcTemplate().update(DELETE_BY_ID_QUERY, new Object[] { id });

编辑:阅读编辑问题后

您可以使用API​​

public int update(PreparedStatementCreator psc) throws DataAccessException

然后传入PreparedStatementCreator的实现,例如(SimplePreparedStatementCreator)并在创建PreparedStatement时打印sql。我没有试过这个,但我认为你应该能够得到它。