是否有任何方法可以利用 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。我说的不对吗?
1条答案
按热度按时间jfgube3f1#
根据flyway的消息来源,他们在springjdbcmigrationexecutor中创建了一个新的jdbctemplate
但是,您可以尝试在迁移中创建一个新的namedparameterjdbctemplate,因为它提供了经典的jdbctemplate。检查此构造函数。例如
new NamedParameterJdbcTemplate(jdbcTemplate)