navicat导出sql脚本
SpringBoot启动自动执行sql脚本逻辑编写
大致逻辑:配置文件配置数据库连接;编写建表及新增记录sql脚本,编写@Configuration类读取并执行sql脚本;
项目总览图如下
- 编写sql脚本,置于resources/sql目录下
schema.sql
DROP TABLE IF EXISTS people;
CREATE TABLE IF NOT EXISTS people(
persion_id INT NOT NULL,
first_name VARCHAR(20),
last_name VARCHAR(20),
PRIMARY KEY (persion_id)
);
data.sql
INSERT INTO people VALUES (1, 'ashe', '弗雷尔卓德');
INSERT INTO people VALUES (2, 'annie', '班德尔城');
INSERT INTO people VALUES (3, 'akali', '均衡教派');
- 配置数据库连接
spring.datasource.driver-class-name=org.sqlite.JDBC
spring.datasource.url=jdbc:sqlite:C:/Users/catface/Desktop/auto.db
- 编写@Configuration配置类
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.jdbc.datasource.init.DataSourceInitializer;
import org.springframework.jdbc.datasource.init.DatabasePopulator;
import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
import javax.sql.DataSource;
@Configuration
public class CustomizeDataSourceInitializer {
@Value("classpath:sql/schema.sql")
private Resource sqlScriptSchema;
@Value("classpath:sql/data.sql")
private Resource sqlScriptData;
@Bean
public DataSourceInitializer dataSourceInitializer(final DataSource dataSource) {
DataSourceInitializer dataSourceInitializer = new DataSourceInitializer();
dataSourceInitializer.setDataSource(dataSource);
dataSourceInitializer.setDatabasePopulator(databasePopulator());
return dataSourceInitializer;
}
private DatabasePopulator databasePopulator() {
ResourceDatabasePopulator resourceDatabasePopulator = new ResourceDatabasePopulator();
resourceDatabasePopulator.addScript(sqlScriptSchema);
resourceDatabasePopulator.addScript(sqlScriptData);
resourceDatabasePopulator.setSeparator(";");//分隔符[默认;]
return resourceDatabasePopulator;
}
}
- 项目运行后会立即执行sql脚本以测试