Java SpringJDBCTemplate如何识别数据类型?
将SpringJDBCTemplate与准备好的语句一起使用时,我们可以单独设置参数值,也可以只传递一个对象数组Java SpringJDBCTemplate如何识别数据类型?,java,sql,spring,jdbctemplate,Java,Sql,Spring,Jdbctemplate,将SpringJDBCTemplate与准备好的语句一起使用时,我们可以单独设置参数值,也可以只传递一个对象数组 jdbctemplate.update(sql, arg1, arg2); 或 这两种方法都有效。但我想知道jdbctemplate在作为对象数组传递时如何转换数据以与数据库列的类型匹配 两种方法的性能有差异吗 如何记录在数据库上执行的最终查询。为org.springframework.jdbc包启用调试日志对我来说不起作用。对JdbcTemplate.update的两个调用之间没
jdbctemplate.update(sql, arg1, arg2);
或
这两种方法都有效。但我想知道jdbctemplate在作为对象数组传递时如何转换数据以与数据库列的类型匹配
两种方法的性能有差异吗
如何记录在数据库上执行的最终查询。为org.springframework.jdbc包启用调试日志对我来说不起作用。对
JdbcTemplate.update的两个调用之间没有区别,事实上,两个调用都使用相同的方法。JdbcTemplate
哪个有下面的签名
public int update(String sql, Object... args) throws DataAccessException
如您所见,最后一个参数是Java变量参数(…),而不是数组。因此,您可以为同一变量参数指定单个值或对象数组
对于JdbcTemplate
如何转换数据以与目标数据类型匹配的问题,它只是创建一个PreparedStatement
并调用PreparedStatement。根据提交的变量参数和值的顺序设置***
方法,实际上只检查给定值是否为字符串
,Date
或Calendar
并调用PreparedStatement.setString
或PreparedStatement.setTimestamp
。对于其他内容,只需PreparedStatement.setObject
非常感谢您的详细回答。您能为我最后一个关于日志记录的问题提供一个解决方案吗?要记录查询和参数,请将org.springframework.jdbc.core logging level设置为TRACE。如果您使用的是SpringBoot,那么设置logging.level.org.springframework.jdbc.core=TRACE属性就足够了。
public int update(String sql, Object... args) throws DataAccessException