Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringJDBCTemplate如何识别数据类型?_Java_Sql_Spring_Jdbctemplate - Fatal编程技术网

Java SpringJDBCTemplate如何识别数据类型?

Java SpringJDBCTemplate如何识别数据类型?,java,sql,spring,jdbctemplate,Java,Sql,Spring,Jdbctemplate,将SpringJDBCTemplate与准备好的语句一起使用时,我们可以单独设置参数值,也可以只传递一个对象数组 jdbctemplate.update(sql, arg1, arg2); 或 这两种方法都有效。但我想知道jdbctemplate在作为对象数组传递时如何转换数据以与数据库列的类型匹配 两种方法的性能有差异吗 如何记录在数据库上执行的最终查询。为org.springframework.jdbc包启用调试日志对我来说不起作用。对JdbcTemplate.update的两个调用之间没

将SpringJDBCTemplate与准备好的语句一起使用时,我们可以单独设置参数值,也可以只传递一个对象数组

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