我必须从spring启动应用程序执行一个sql脚本块(通常是一个函数)。我不能将此功能保留在我的postgres数据库中,因为我想在应用程序级别维护。我尝试使用schema.sql
(来自资源文件夹),这看起来只是在服务器启动期间执行。
但是,我想在每次需要时通过JPA或JDBCTemplate调用此 plsql 块。
除schema.sql
以外的任何其他可以按需执行的替代方案吗?
答案 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。