flyway迁移:namedparameterjdbctemplate

tvz2xvvm  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(380)

是否有任何方法可以利用 NamedParameterJdbcTemplate 而不是标准 JdbcTemplate 它来自于 SpringJdbcMigration ?
我需要运行一个升级,将列类型从text转换为integer(将字符串值替换为与该值关联的内部id)
我这样做的方法是临时存储用于反向查找的字符串值,删除列并将其重新添加为正确的类型,然后运行update调用将适当的id添加到记录中。我希望在迁移过程中执行以下类似的代码:

String sql = "UPDATE my_table SET my_field = :my_field WHERE my_id IN (:my_ids)";
MapSqlParameterSource source = new MapSqlParameterSource();
source.addValue("my_field", someIntValue); // the internal id of the string I want to use.
source.addValue("my_ids", someListOfPKIds); // List of PK ids. 
namedTemplate.update(sql,source); //namedTemplate is a NamedParameterJdbcTemplate

但是,似乎我不能利用namedparameterjdbctemplate。我说的不对吗?

jfgube3f

jfgube3f1#

根据flyway的消息来源,他们在springjdbcmigrationexecutor中创建了一个新的jdbctemplate
但是,您可以尝试在迁移中创建一个新的namedparameterjdbctemplate,因为它提供了经典的jdbctemplate。检查此构造函数。例如 new NamedParameterJdbcTemplate(jdbcTemplate)

相关问题