配置

完整配置文件

spring:
  ezasse:
    folder: sql
    file-list:
      - V1
      - V2.sql
    group-order:
      - V1
      - V2
    delimiter-start: -- [
    delimiter-end: -- ]
    key-words:
      exec: EXEC
      table:
        create-table: TABLE
      field:
        add: ADD
        change-name: CHANGE_NAME
        change-type: CHANGE_TYPE
        change-comment: CHANGE_COMMENT
        change-length: CHANGE_LENGTH

详解

spring.ezasse.folder

  • SQL文件所在位置
默认值是否必须解释备注
sql指定SQL文件所在位置,该文件夹只支持放在resources目录下目前只支持单一文件夹,后期会考虑适配多文件夹件

spring.ezasse.file-list

  • 需要进行校验的文件列表
默认值是否必须解释备注
null可以指定多个文件,可以是SQL文件的完整名称,也可以是SQL文件的部分命令,ezasse 使用 startWith() 判断如果不指定,会校验执行spring.ezasse.folder文件夹下的全部文件

spring.ezasse.group-order

  • SQL分组顺序
默认值是否必须解释备注
null当SQL文件存在多个分组,该配置是必须的如果不指定,会按默认的顺序校验执行

spring.ezasse.delimiter-start

  • 开始界定符
默认值是否必须解释备注
null限制校验行包含的SQL的开始位置,独占一行需要与校验关键字配合使用

spring.ezasse.delimiter-end

  • 结算界定符
默认值是否必须解释备注
null限制校验行包含的SQL的结束位置,独占一行需要与校验关键字配合使用

TIP

  • 开始界定符与结束界定符是成对出现的
  • 界定符全局生效
  • 无论是否使用界定符,都可以支持多行脚本执行
  • 使用示例,当开始界定符与结束界定符分别设定为 -- {,-- }
-- EXEC(select 0)
-- {
insert into t_user(id,mysql) values('1','PerccyKing');
-- }

spring.ezasse.key-words.exec

默认值是否必须解释备注
EXEC可以覆盖默认的关键字,按自己喜好任意定义修改后全局生效

spring.ezasse.key-words.table.create-table

默认值是否必须解释备注
TABLE可以覆盖默认的关键字,按自己喜好任意定义修改后全局生效

spring.ezasse.key-words.field.add

默认值是否必须解释备注
ADD可以覆盖默认的关键字,按自己喜好任意定义修改后全局生效

spring.ezasse.key-words.field.change-name

默认值是否必须解释备注
CHANGE_NAME可以覆盖默认的关键字,按自己喜好任意定义修改后全局生效

spring.ezasse.key-words.field.change-type

默认值是否必须解释备注
CHANGE_TYPE可以覆盖默认的关键字,按自己喜好任意定义修改后全局生效

spring.ezasse.key-words.field.change-comment

默认值是否必须解释备注
CHANGE_COMMENT可以覆盖默认的关键字,按自己喜好任意定义修改后全局生效

spring.ezasse.key-words.field.change-length

默认值是否必须解释备注
CHANGE_LENGTH可以覆盖默认的关键字,按自己喜好任意定义修改后全局生效

多数据源配置

以下为使用dynamic-datasource-spring-boot-starteropen in new window的多数据源配置

package cn.com.pism.ezasse.demo.multidb.config;

import cn.com.pism.ezasse.starter.EzasseDatasource;
import cn.com.pism.ezasse.starter.annotation.EnableEzasse;
import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;
import java.util.Map;

/**
 * @author PerccyKing
 * @version 0.0.1
 * @since 0.0.1
 */
@Configuration
@EnableEzasse
public class EzasseConfig implements EzasseDatasource, ApplicationContextAware {

    private ApplicationContext applicationContext;

    @Override
    public Map<String, DataSource> getDataSource() {
        return ((DynamicRoutingDataSource) applicationContext.getBean(DataSource.class)).getDataSources();
    }

    @Override
    public DataSource getMaster() {
        return ((DynamicRoutingDataSource) applicationContext.getBean(DataSource.class)).getDataSource("master");
    }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }
}

Last Updated:
Contributors: PerccyKing