如何从spring-boot执行postgres sql块

时间:2016-10-06 12:09:15

标签: java postgresql jpa spring-boot

我必须从spring启动应用程序执行一个sql脚本块(通常是一个函数)。我不能将此功能保留在我的postgres数据库中,因为我想在应用程序级别维护。我尝试使用schema.sql(来自资源文件夹),这看起来只是在服务器启动期间执行。

但是,我想在每次需要时通过JPA或JDBCTemplate调用此 plsql 块。

schema.sql以外的任何其他可以按需执行的替代方案吗?

2 个答案:

答案 0 :(得分:1)

在单元测试中,有@Sql批注,可用于执行脚本:

@RunWith(SpringRunner.class)
@SpringBootTest
@Sql("/reset_sequences.sql")
public class ModuleTemplateRepositoryTests { ... }

为了从spring应用程序中启动自定义sql脚本,我们使用了ScriptUtils(stackoverflow here

@Value("classpath:reset_sequences.sql")
Resource script;

@Autowired
JdbcTemplate jdbcTemplate;

...
ScriptUtils.executeSqlScript(
    jdbcTemplate.getDataSource().getConnection(), script);

答案 1 :(得分:-1)

如果您将函数存储在数据库中,则可以查看此示例here