如何使用多个语句执行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());
答案 0 :(得分:0)
我使用了 spring-jdbc 中的 ScriptUtils 类,从 4.0.3 版开始可用,如下所示:
ClassPathResource schemaResource = new ClassPathResource("schema.sql");
ScriptUtils.executeSqlScript(myDataSource.getConnection(), schemaResource);
注意!遗憾的是,这将不返回最后一条语句的结果。如果需要结果,我会考虑将脚本和脚本的最后一条语句分开。
ScriptUtils 类包含读取和拆分 SQL 脚本的方法。