LiquiBase

又get一个有意思的东西。现在我只是会简单的使用。后面如果有深入了解也可以继续写。

官方文档http://www.liquibase.org/documentation/changes/load_data.html

目录

1. LiquiBase

(1)pom.xml 导入依赖

(2)master.xml

(3)编写表xml

2. 组件


1. LiquiBase

(1)pom.xml 导入依赖

	    <dependency>
			<groupId>org.liquibase</groupId>
			<artifactId>liquibase-core</artifactId>
			<version>3.5.3</version>
		</dependency>

(2)master.xml

<?xml version="1.0" encoding="utf-8"?>
<databaseChangeLog
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
    <include file="classpath:db.liquibase/changelog/initTable.xml" relativeToChangelogFile="false"/>
</databaseChangeLog>

(3)编写表xml

changeSet 的id默认为新建时的当前日期(yyyyMMddHHmm)+00*,比如 201809190930001

<?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.4.xsd">
    <property name="now" value="now()" dbms="mysql"/>
    <changeSet id="201809191632" author="rookie">
        <createTable tableName="art_accounts" remarks="测试">
            <column name="id" type="bigint" autoIncrement="true" remarks="主键">
               <constraints primaryKey="true" nullable="false"/>
            </column>
        </createTable>
    </changeSet>
</databaseChangeLog>

(4)配置 application 

spring.liquibase.change-log=classpath:db.liquibase/master.xml

2. 组件

createIndex: 创建索引
<createIndex tableName="ven_vendor_info" indexName="idx_vendor_id">
    <column name="vendor_id" />
</createIndex>
modifyDataType: 修改数据类型
<modifyDataType tableName="atl_vendor_info" columnName="import_code" newDataType="varchar(50)" />
dropColumn: 删除列
<dropColumn tableName="atl_relation_vendor_company" columnName="is_deleted"/>
renameColumn: 重命名列
<renameColumn tableName="atl_vendor_type" oldColumnName="is_deleted" newColumnName="deleted"/>
renameTable:重命名表名
<renameTable oldTableName="atl_vendor_type" newTableName="ven_vendor_type"/>
dropNotNullConstraint:删除非空约束
<dropNotNullConstraint tableName="sys_workflow_transfer" columnName="end_date"/>
<addNotNullConstraint tableName="sys_workflow_transfer" columnName="start_date"/>
 loadData: CSV文件中的数据加载到现有表
<comment>初始化sys_area</comment>
<loadData encoding="UTF-8"
          file="config/liquibase/init/csv/sys_area.csv"
          separator="|"
          tableName="sys_area"/>
sys_area.csv:

id|code|name|type|parent_id
1|110000|北京|PROVINCE|0
2|CHN012000000|天津|PROVINCE|0
3|CHN013000000|河北省|PROVINCE|0
4|CHN014000000|山西省|PROVINCE|0
5|CHN015000000|内蒙古|PROVINCE|0
 customChange: 通过cvs进行初始化数据。(可以同步不同环境数据)

    <changeSet id="v.1.0.0_init_sysPage" author="rookie">
    <comment>初始化页面</comment>
    <customChange class="com.hand.hcf.core.handler.LiquibaseTaskChange">
        <param name="serviceBeanName" value="initBaseDataClient"/>
        <param name="paramClassName" value="com.hand.hcf.app.client.system.dto.PageListCO"/>
        <param name="serviceMethodName" value="initPageList"/>
        <param name="file" value="classpath:csv/init/sysPage.csv"/>
        <param name="separator" value=","/>
    </customChange>
    </changeSet>

3.Exception

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'liquibase' defined in class path resource [org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration$LiquibaseConfiguration.class]: Invocation of init method failed; nested exception is java.lang.ArrayIndexOutOfBoundsException: 1
type类型指定错误或者未指定。(请检查column字段是否完整、正确)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值