hec-panda-dev_总结_02_liquibase建表流程
一、前言
二、建表流程
1.写脚本

package com.hand.hec.panda.db import com.hand.hap.liquibase.MigrationHelper def mhi = MigrationHelper.getInstance() dbType = mhi.dbType() databaseChangeLog(logicalFilePath: "2018-09-06-panda-script-init-table-migration.groovy") { changeSet(author: "ray", id: "20180817-SYS_SCRIPT_B") { //序列 if(mhi.isDbType('oracle') || mhi.isDbType('hana') || mhi.isDbType('postgresql')){ createSequence(sequenceName: 'SYS_SCRIPT_B_S', startValue:"10001") } createTable(tableName: "SYS_SCRIPT_B") { //主键 if(mhi.isDbType('oracle') || mhi.isDbType('hana') || mhi.isDbType('postgresql')){ column(name:"SCRIPT_ID",type:"bigint",remarks:"nashorn脚本ID"){ constraints(nullable: "false", primaryKey: "true",primaryKeyName: "SYS_SCRIPT_B_PK") } }else { column(name:"SCRIPT_ID",type:"bigint",autoIncrement: "true", startWith:"10001",remarks:"nashorn脚本ID"){ constraints(nullable: "false", primaryKey: "true",primaryKeyName: "SYS_SCRIPT_B_PK") } } column(name: "SCRIPT_CODE", type:"nvarchar(30)", remarks: "脚本代码") { constraints(nullable: "false",unique:"true",uniqueConstraintName:"SYS_SCRIPT_B_U1") } column(name: "SCRIPT_NAME", type:"nvarchar(30)", remarks: "脚本名称") { constraints(nullable: "false") } column(name: "SCRIPT_PATH", type: 'nvarchar(64)', remarks: "脚本文件路径") column(name: "SCRIPT_CONTENT", type: 'text', remarks: "脚本内容") column(name: "DESCRIPTION", type: 'nvarchar(240)', remarks: "描述") column(name: "ENABLED_FLAG", type: 'nvarchar(1)', remarks: "启用标志") column(name: "DELETED_FLAG", type: 'nvarchar(1)', remarks: "删除标志") column(name: "CLIENT_ID", type: 'bigint', remarks: "租户ID") column(name: "OBJECT_VERSION_NUMBER", type: "BIGINT", defaultValue: "1") column(name: "REQUEST_ID", type: "bigint", defaultValue: "-1") column(name: "PROGRAM_ID", type: "bigint", defaultValue: "-1") column(name: "CREATED_BY", type: "bigint", defaultValue: "-1") column(name: "CREATION_DATE", type: "datetime", defaultValueComputed: "CURRENT_TIMESTAMP") column(name: "LAST_UPDATED_BY", type: "bigint", defaultValue: "-1") column(name: "LAST_UPDATE_DATE", type: "datetime", defaultValueComputed: "CURRENT_TIMESTAMP") column(name: "LAST_UPDATE_LOGIN", type: "bigint", defaultValue: "-1") column(name: "ATTRIBUTE_CATEGORY", type: "nvarchar(30)") column(name: "ATTRIBUTE1", type: "nvarchar(240)") column(name: "ATTRIBUTE2", type: "nvarchar(240)") column(name: "ATTRIBUTE3", type: "nvarchar(240)") column(name: "ATTRIBUTE4", type: "nvarchar(240)") column(name: "ATTRIBUTE5", type: "nvarchar(240)") column(name: "ATTRIBUTE6", type: "nvarchar(240)") column(name: "ATTRIBUTE7", type: "nvarchar(240)") column(name: "ATTRIBUTE8", type: "nvarchar(240)") column(name: "ATTRIBUTE9", type: "nvarchar(240)") column(name: "ATTRIBUTE10", type: "nvarchar(240)") column(name: "ATTRIBUTE11", type: "nvarchar(240)") column(name: "ATTRIBUTE12", type: "nvarchar(240)") column(name: "ATTRIBUTE13", type: "nvarchar(240)") column(name: "ATTRIBUTE14", type: "nvarchar(240)") column(name: "ATTRIBUTE15", type: "nvarchar(240)") column(name: "ATTRIBUTE16", type: "nvarchar(240)") column(name: "ATTRIBUTE17", type: "nvarchar(240)") column(name: "ATTRIBUTE18", type: "nvarchar(240)") column(name: "ATTRIBUTE19", type: "nvarchar(240)") column(name: "ATTRIBUTE20", type: "nvarchar(240)") } createTable(tableName: "SYS_SCRIPT_B_TL") { column(name:"CODE_ID",type:"bigint",remarks: "nashorn脚本ID"){ constraints(nullable: "false", primaryKey: "true") } column(name:"LANG",type:"varchar(10)",remarks: "语言"){ constraints(nullable: "false", primaryKey: "true") } column(name:"DESCRIPTION",type:"varchar(240)",remarks: "脚本描述") column(name:"OBJECT_VERSION_NUMBER",type:"BIGINT",defaultValue: "1") column(name: "REQUEST_ID", type: "bigint", defaultValue : "-1") column(name: "PROGRAM_ID", type: "bigint", defaultValue : "-1") column(name: "CREATED_BY", type: "bigint", defaultValue : "-1") column(name: "CREATION_DATE", type: "datetime", defaultValueComputed : "CURRENT_TIMESTAMP") column(name: "LAST_UPDATED_BY", type: "bigint", defaultValue : "-1") column(name: "LAST_UPDATE_DATE", type: "datetime", defaultValueComputed : "CURRENT_TIMESTAMP") column(name: "LAST_UPDATE_LOGIN", type: "bigint", defaultValue : "-1") column(name:"ATTRIBUTE_CATEGORY",type:"varchar(30)") column(name:"ATTRIBUTE1",type:"varchar(240)") column(name:"ATTRIBUTE2",type:"varchar(240)") column(name:"ATTRIBUTE3",type:"varchar(240)") column(name:"ATTRIBUTE4",type:"varchar(240)") column(name:"ATTRIBUTE5",type:"varchar(240)") column(name:"ATTRIBUTE6",type:"varchar(240)") column(name:"ATTRIBUTE7",type:"varchar(240)") column(name:"ATTRIBUTE8",type:"varchar(240)") column(name:"ATTRIBUTE9",type:"varchar(240)") column(name:"ATTRIBUTE10",type:"varchar(240)") column(name:"ATTRIBUTE11",type:"varchar(240)") column(name:"ATTRIBUTE12",type:"varchar(240)") column(name:"ATTRIBUTE13",type:"varchar(240)") column(name:"ATTRIBUTE14",type:"varchar(240)") column(name:"ATTRIBUTE15",type:"varchar(240)") } } }
2.执行mvn命令
在项目根目录执行如下命令
mvn process-resources -D skipLiquibaseRun=false -D db.driver=org.postgresql.Driver -D db.url=jdbc:postgresql://192.168.100.90:90/haha_dev -D db.user=hahga_dev -D db.password=hahadev
三、脚本要点
1.脚本结构
databaseChangeLog ( logicalFilePath ){
changeSet( author 、id){
createSequence
createTable( tableName : _B ){
primaryKey
columns
}
createTable( tableName : _TL ){
primaryKey
columns
}
}
}
2.创建序列
//序列 if(mhi.isDbType('oracle') || mhi.isDbType('hana') || mhi.isDbType('postgresql')){ createSequence(sequenceName: 'SYS_SCRIPT_B_S', startValue:"10001") }
3.创建主键
//主键 if(mhi.isDbType('oracle') || mhi.isDbType('hana') || mhi.isDbType('postgresql')){ column(name:"SCRIPT_ID",type:"bigint",remarks:"nashorn脚本ID"){ constraints(nullable: "false", primaryKey: "true",primaryKeyName: "SYS_SCRIPT_B_PK") } }else { column(name:"SCRIPT_ID",type:"bigint",autoIncrement: "true", startWith:"10001",remarks:"nashorn脚本ID"){ constraints(nullable: "false", primaryKey: "true",primaryKeyName: "SYS_SCRIPT_B_PK") } }
4.唯一索引
column(name: "SCRIPT_CODE", type:"nvarchar(30)", remarks: "脚本代码") { constraints(nullable: "false",unique:"true",uniqueConstraintName:"SYS_SCRIPT_B_U1") }
三、参考资料