引入flyway_core jar包java
java 代码实现spring
public class FlywayMigration {sql
@Resource
private DataSource dataSource;this
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}编码
public void migration() {
Flyway flyway = new Flyway();
flyway.setDataSource(dataSource);code
flyway.setInitOnMigrate(true);xml
flyway.setTable("schemas_version");// 设置存放flyway metadata数据的表名it
// 设置flyway扫描sql升级脚本,java升级脚本的目录路径或包路径
flyway.setLocations("database", "com.navinsight.holoviewer.back.transverse.util");io
flyway.setEncoding("UTF-8");// 设置sql脚本文件的编码class
flyway.setValidateOnMigrate(true); // 设置执行migrate操做以前的validation行为
try {
flyway.migrate();
} catch (Exception e) {
flyway.repair();
e.printStackTrace();
}
}
}
sql文件命名规范:V+版本号+两个_+描述+.sql
在Spring 中根据上面实现的类来定义(实例化)一个bean
<bean id="flywayMigration" class="com.kedacom.flywaydemo.FlywayMigration" init-method="migrate"> <property name="dataSource" ref="dataSource" /> </bean>
若是启动有问题,能够设置:
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" depends-on="flywayMigration"> <property name="dataSource" ref="dataSource" /> </bean> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" depends-on="flywayMigration"> <property name="dataSource" ref="dataSource" /> </bean>