java-使用Liquibase和Spring合并DB中的值

java-使用Liquibase和Spring合并DB中的值,第1张

概述我正在尝试使用liquibase更改数据库的布局,但是我有一个问题是:例如,假设我的旧数据库的表包含2列(firstName,lastName),而我的新数据库中只有两列(userName).我该如何使用liquibase和Spring进行迁移.因为按照以下逻辑,我会丢失原始值.理想情况下,我希望能够调用我的Java代码进行更改,但在这种情况下,在某些情况下

我正在尝试使用liquibase更改数据库的布局,但是我有一个问题是:

例如,假设我的旧数据库的表包含2列(firstname,lastname),而我的新数据库中只有两列(username).

我该如何使用liquibase和Spring进行迁移.因为按照以下逻辑,我会丢失原始值.

理想情况下,我希望能够调用我的Java代码进行更改,但在这种情况下,在某些情况下可能需要过度设计;)

<databaseChangeLog    xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.1"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog/1.1    http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.1.xsd">    <changeSet author="gcardoso" ID="2012082703">        <dropColumn columnname="firstname" tablename="t_user"/>        <dropColumn columnname="lastname" tablename="t_user"/>        ?????? How to migrate the names ??????        <addColumn tablename="t_user">            <column name="username" type="VARCHAR2(255,0)">                <constraints nullable="false"/>            </column>        </addColumn>    </changeSet></databaseChangeLog>
最佳答案您需要自定义重构.有两种可能性:

> Custom SQL以使用sql可以实现的更改
> Custom Refactoring class进行更复杂的更改.通过这种方法,您可以使用Java来实现重构.

所以你会

>添加新列
>通过自定义重构更改将数据从旧列迁移到新列
>删除旧列

如何在Spring JdbcTemplate中使用自定义重构类

@OverrIDepublic voID execute(Database database) throws CustomChangeException {    JdbcConnection connection = (JdbcConnection) database.getConnection();    DataSource dataSource = new SingleConnectionDataSource(connection.getUnderlyingConnection(),true);    JdbcTemplate template = new JdbcTemplate(dataSource,false);}
总结

以上是内存溢出为你收集整理的java-使用Liquibase和Spring合并DB中的值 全部内容,希望文章能够帮你解决java-使用Liquibase和Spring合并DB中的值 所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1237208.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存