0
点赞
收藏
分享

微信扫一扫

msvcr110.dll丢失的解决方法有哪些-常见方法教程

做个橙梦 2023-12-10 阅读 32
spring boot

一: 自动执行回滚, 已执行成功的忽略,新sql执行失败则执行新sql文件中的回滚sql

pom.xml 

sql 文件指定回滚sql

新建一个 CustomChangeExecListener 继承 AbstractChangeExecListener 

@Service
@Slf4j
public class CustomChangeExecListener extends AbstractChangeExecListener {

@SneakyThrows
public void runFailed(ChangeSet changeSet, DatabaseChangeLog databaseChangeLog, Database database, Exception exception) {
log.error("sql执行失败, 执行回滚sql, 错误原因: {}", exception.getMessage());

String line = "\r\n";

String jdbc = "jdbc";

List<String> sqlList = new ArrayList<>();
changeSet.getRollback().getChanges().stream().forEach(e->{
RawSQLChange rawSQLChange = (RawSQLChange) e;
Arrays.asList(rawSQLChange.getSql().split(line)).stream().forEach(sql->{
sqlList.add(sql);
});
});

if(CollectionUtils.isEmpty(sqlList)){
return;
}

Executor executor = Scope.getCurrentScope().getSingleton(ExecutorService.class).getExecutor(jdbc, database);
for (String sql : sqlList){
executor.execute(new RawSqlStatement(sql));
}

}


}

启动参数加上:

-Dliquibase.command.changeExecListenerClass=com.tang.execListener.CustomChangeExecListener

2️⃣: 自动打tag, 注意如果有上面的自动执行回滚sql, 这一步不是很重要

spring.liquibase.tag 不起作用, 搞个自动打tag

1: github 拉取源码

2: idea 打开如下路径:

加入如下代码:

  if(change instanceof RawSQLChange){
tag = changeSet.getId();
}

 

把编译的class 替换jar路径中的class放到仓库

sql文件中加入标记如下: 作者:id

加入上面的代码,tag会拿这个id 作为tag标签。

执行结果:

举报

相关推荐

0 条评论