Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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 如何使用jdbcTemplate中替换的通配符获取完整的sql脚本?_Java_Spring_Spring Jdbc_Jdbctemplate - Fatal编程技术网

Java 如何使用jdbcTemplate中替换的通配符获取完整的sql脚本?

Java 如何使用jdbcTemplate中替换的通配符获取完整的sql脚本?,java,spring,spring-jdbc,jdbctemplate,Java,Spring,Spring Jdbc,Jdbctemplate,我有以下代码 public class Foo{ private final NamedParameterJdbcTemplate nJdbcTemplate; public void bar(....){ String query = "INSERT INTO .... .... nJdbcTemplate.batchUpdate(query, mapSqlParameterSourcesArray); } }

我有以下代码

public class Foo{

    private final NamedParameterJdbcTemplate nJdbcTemplate;

    public void bar(....){
         String query = "INSERT INTO ....
         ....
         nJdbcTemplate.batchUpdate(query, mapSqlParameterSourcesArray);
    }

}
我希望获得完整、有效的insert SQL脚本,以便将其插入到另一个数据库中


有没有办法在spring jdbc模板中实现它?

没有在jdbc模板中实现

替换占位符的不是jdbc模板。它是JDBC驱动程序(甚至可能是数据库服务器!)。看看接口——参数实际上是通过与语句不同的方法传递的


(虽然此接口不允许命名参数,但状态是Spring将命名参数转换为
,使其适合此接口的输入。)

不在jdbc模板中

替换占位符的不是jdbc模板。它是JDBC驱动程序(甚至可能是数据库服务器!)。看看接口——参数实际上是通过与语句不同的方法传递的


(虽然此接口不允许命名参数,但状态是Spring将命名参数转换为
,使其适合此接口的输入。)

谢谢您的回答,但您能建议任何解决方法吗?不幸的是,我无法提供一个好的解决方法。这种替换是在JDBC驱动程序中完成的,因为它不是微不足道的(我们在这里讨论的是SQL注入之类的)。一个简单的方法是遍历语句并用下一个参数替换每个
,但是1)包含
的stirng如何,2)您不怕SQL注入吗?如果您的用例是希望在数据库中执行完整的SQL之后(而不是之前/相反)检索完整的SQL,如果数据库支持这种功能,您可以尝试使用数据库的“查询日志”(它通常是一个包含所有已执行SQL语句的表,但大多数情况下,由于明显的原因,它在默认情况下是关闭的)。这听起来很适合我。谢谢你的回答,我会在我的博文中对此进行调查,但你能建议一些解决方法吗?不幸的是,我不能提供一个好的解决方法。这种替换是在JDBC驱动程序中完成的,因为它不是微不足道的(我们在这里讨论的是SQL注入之类的)。一个简单的方法是遍历语句并用下一个参数替换每个
,但是1)包含
的stirng如何,2)您不怕SQL注入吗?如果您的用例是希望在数据库中执行完整的SQL之后(而不是之前/相反)检索完整的SQL,如果数据库支持这种功能,您可以尝试使用数据库的“查询日志”(它通常是一个包含所有已执行SQL语句的表,但大多数情况下,由于明显的原因,它在默认情况下是关闭的)。这听起来很适合我。我将在postgresql中对此进行调查