Spring Boot 如何在insert语句中使用liquibase参数?

92vpleto  于 2023-02-04  发布在  Spring
关注(0)|答案(2)|浏览(176)

bounty将在2天后过期。回答此问题可获得+200的声誉奖励。Greg正在寻找来自声誉良好的来源的答案

Sping Boot 中有一个liquibase参数,例如:

spring.liquibase.parameters.val1 = value1

我想在SQL文件中使用这个参数,如下所示:

insert into table1 (name, value) values ("nameOfValue", ${val1});

不幸的是,到目前为止,唯一有效的组合是放置3个单引号-'''${val1}'''(得到'value1')和substring,去掉第一个和最后一个单引号。
在SQL变更集文件的INSERT语句中使用liquibase参数,有没有更简洁的方法?

a11xaf1n

a11xaf1n1#

看起来您不必做任何特殊的事情就可以从属性中插入参数,无论选择的变更集格式如何。
以下所有语句都将生成有效的insert语句。

SQL变更集

--changeset me:2
insert into test1 (id, name) values (1, 'name 1');
insert into test1 (id, name) values (3, '${val1}');

YAML变更集

- changeSet:
    id: 2
    author: me
    changes:
      - sql:
          endDelimiter: ;
          sql: >-
            insert into test1 (id, name) values (1, 'name 1');
            insert into test1 (id, name) values (3, '${val1}');

XML变更集:

<changeSet id="2" author="me">
    <sql endDelimiter=";">
        insert into test1 (id, name) values (1, 'name 1');
        insert into test1 (id, name) values (3, '${val1}');
    </sql>
</changeSet>
vsaztqbk

vsaztqbk2#

假设您的 * 插入 * 是在 * xxx. sql * 文件中完成的,那么您告诉liquibase您的SQL已格式化是重要的,您可以通过在文件顶部添加--liquibase formatted sql来完成
示例:插入. sql

--liquibase formatted SQL
--changeset Greg:1
insert into table1 (name, value) values ('nameOfValue', '${val1}');

参考文献:

相关问题