实现
- pom.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.14</version> <relativePath/> </parent> <groupId>cn.idea360</groupId> <artifactId>auto-ddl-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>auto-ddl-demo</name> <description>auto-ddl-demo</description> <properties> <java.version>11</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
<dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.liquibase</groupId> <artifactId>liquibase-core</artifactId> </dependency> </dependencies>
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build>
</project>
|
- application.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13
| spring: datasource: password: root123456 url: jdbc:mysql://localhost:3306/liquibase username: root sql: init: mode: ALWAYS schema-locations: - 'classpath:sql/spring-create-table.sql' liquibase: enabled: true change-log: classpath:database_changelog.xml
|
- database_changelog.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <?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">
<changeSet id="create-table" author="idea360"> <sqlFile path="classpath:sql/liquibase-create-table.sql"/> </changeSet>
<changeSet id="init-data" author="idea360"> <sqlFile path="classpath:sql/liquibase-init-data.sql"/> </changeSet>
</databaseChangeLog>
|
- resources/sql
liquibase-create-table.sql
1 2 3 4 5 6
| CREATE TABLE liquibase_user_account( id bigint NOT NULL AUTO_INCREMENT, username varchar(50) NOT NULL, PRIMARY KEY (id), UNIQUE KEY (username) ) ENGINE=InnoDB;
|
liquibase-init-data.sql
1 2 3
| INSERT INTO liquibase_user_account (id, username) VALUES (1, 'zhangsan'), (2, 'lisi');
|
spring-create-table.sql
1 2 3 4 5 6
| CREATE TABLE spring_user_account( id bigint NOT NULL AUTO_INCREMENT, username varchar(50) NOT NULL, PRIMARY KEY (id), UNIQUE KEY (username) ) ENGINE=InnoDB;
|
bean
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| @Bean public EmbeddedDatabase embeddedDatabase() { return new EmbeddedDatabaseBuilder() .generateUniqueName(false) .setName("authzserver") .setType(EmbeddedDatabaseType.H2) .setScriptEncoding("UTF-8") .addScript("org/springframework/security/oauth2/server/authorization/oauth2-authorization-schema.sql") .addScript("org/springframework/security/oauth2/server/authorization/oauth2-authorization-consent-schema.sql") .addScript("org/springframework/security/oauth2/server/authorization/client/oauth2-registered-client-schema.sql") .build(); }
|