作用:数据库版本更新历史记录。每次启动项目,都会去锁住数据库,检查是否有数据库的变更。
使用:
第一步:引入坐标
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
</dependency>
第二步: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:liquibase/changelog/changelog-20180821.xml"/>
</databaseChangeLog>
第三步:历史记录changelog-20180821.xml文件
<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="autoIncrement" value="true" dbms="mysql"/>
<changeSet id="1" author="sunguodong">
<comment>增加机械图标icon</comment>
<sql>
ALTER TABLE `app_mach_type`
ADD COLUMN `icon` VARCHAR(50) NULL DEFAULT NULL COMMENT '机械图标' AFTER
`first_letter`;
</sql>
</changeSet>
<changeSet id="2" author="sunguodong">
<comment>增加机械图标icon</comment>
<sql>
ALTER TABLE `app_mach_type`
ADD COLUMN `icon` VARCHAR(50) NULL DEFAULT NULL COMMENT '机械图标' AFTER
`first_letter`;
</sql>
</changeSet>
</databaseChangeLog>
第四步:
@Configuration
@EnableConfigurationProperties(DataSourceProperties.class)
public class DataSourceConfig {
@Autowired
private DataSourceProperties properties;
@Bean
public DataSource dataSource() {
DruidDataSource datasource = new DruidDataSource();
datasource.setUrl(properties.getUrl());
datasource.setUsername(properties.getUsername());
datasource.setPassword(properties.getPassword());
datasource.setDriverClassName(properties.getDriverClassName());
datasource.setValidationQuery("select 1");
datasource.setValidationQueryTimeout(60000);
return datasource;
}
@Bean
public SpringLiquibase liquibase() throws SQLException {
SpringLiquibase liquibase = new SpringLiquibase();
liquibase.setDataSource(dataSource());
liquibase.setChangeLog("classpath:liquibase/master.xml");
liquibase.setShouldRun(true);
liquibase.setDropFirst(false);
return liquibase;
}
}