在Spring中使用多个语句执行sql脚本

时间:2016-04-28 22:26:10

标签: spring

如何使用多个语句执行sql脚本,其中最后一个语句使用Spring getSimpleJdbcTemplate返回结果?我不要求在查询列表中拆分脚本,并通过循环遍历列表。

  String query="";
        EncodedResource resource = new EncodedResource(context.getResource("/resources/spring/sql/my.sql"), "UTF-8");
        try {
            LineNumberReader lnr = new LineNumberReader(resource.getReader());
            query =JdbcTestUtils.readScript(lnr);

        } catch (Exception e) {
            e.printStackTrace;

        }
        return (String)getSimpleJdbcTemplate().queryForObject(query, String.class, new MapSqlParameterSource());

1 个答案:

答案 0 :(得分:0)

我使用了 spring-jdbc 中的 ScriptUtils 类,从 4.0.3 版开始可用,如下所示:

ClassPathResource schemaResource = new ClassPathResource("schema.sql");
ScriptUtils.executeSqlScript(myDataSource.getConnection(), schemaResource);

注意!遗憾的是,这将返回最后一条语句的结果。如果需要结果,我会考虑将脚本和脚本的最后一条语句分开。

ScriptUtils 类包含读取和拆分 SQL 脚本的方法。