Liquibase 3.X customChange 的使用

官方地址:

https://www.liquibase.org/documentation/changes/custom_change.html

官方的例子实在是 -_-! 

1.change.xml

<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd">


    <changeSet author="zcg" id="5_test_customChange" runAlways="false" failOnError="true" >
        <comment>自定义后台处理</comment>
        <customChange class="com.example.springliquibasedemo.component.CreateTableTask">
            <param name="param1" value="t1"  />
            <param name="file" value="/db/liquibase/test/user.csv" />
        </customChange>
    </changeSet>

</databaseChangeLog>

2.CustomTaskChange实现

public class CreateTableTask  implements CustomTaskChange {

    //xml参数配置
    private String file;
    private String param1;
    private ResourceAccessor resourceAccessor;

    public String getFile() {
        return file;
    }

    public void setFile(String file) {
        this.file = file;
    }

    public String getParam1() {
        return param1;
    }

    public void setParam1(String param1) {
        this.param1 = param1;
    }

    @Override
    public void execute(Database database) throws CustomChangeException {
        try
        {
            JdbcConnection connection = (JdbcConnection) database.getConnection();
            DataSource dataSource = new SingleConnectionDataSource(connection.getUnderlyingConnection(), true);
            JdbcTemplate template = new JdbcTemplate(dataSource, false);

            Set<InputStream> streams = resourceAccessor.getResourcesAsStream(file);
            BufferedReader in = new BufferedReader(new InputStreamReader(streams.iterator().next()));

            //忽略头
            String str = in.readLine();

            while ((str = in.readLine()) != null && !str.trim().equals("")) {

                //Do
            }
            in.close();
        }
        catch (Exception e)
        {
            throw new CustomChangeException(e);
        }
    }

    @Override
    public String getConfirmationMessage() {
        return null;
    }

    @Override
    public void setUp() throws SetupException {

    }

    @Override
    public void setFileOpener(ResourceAccessor resourceAccessor) {
        this.resourceAccessor = resourceAccessor;
    }

    @Override
    public ValidationErrors validate(Database database) {
        return null;
    }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值