SpringBoot项⽬启动⾃动创库建表
平时在⽤SpringBoot开发时我们需⽤连接数据库,⾸先我们都是先创好数据库名和表结构,然后在YML配置好数据库名,这样⼗分的不⽅便,有没有⼀种⽅式在SpringBoot启动时就把库表创建好呢?
今天为⼤家介绍⼀种⽅式:
1.先创建数据库,⾃定义⼀个配置类(DataSourceConfig),⾥⾯获取YML⾥⾯的数据库配置信息,然后通过Druid连接数据库,运⾏建库语句@Configuration
@Primary //在同样的DataSource中,⾸先使⽤被标注的DataSource
public class DataSourceConfig {
private Logger log = Logger(DataSourceConfig.class);
/**jdbc:mysql://127.0.0.1:3306/insight?useUnicode=true&characterEncoding=utf8&failOverReadOnly=false&allowMultiQueries=true
*/
@Value("${spring.datasource.url}")
private String datasourceUrl;
@Value("${spring.datasource.driver-class-name}")
private String driverClassName;
@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
@Bean    //声明其为Bean实例
public DataSource dataSource(){
DruidDataSource datasource = new DruidDataSource();
datasource.setUrl(datasourceUrl);
datasource.setUsername(username);
datasource.setPassword(password);
datasource.setDriverClassName(driverClassName);
try {
Class.forName(driverClassName);
String url01 = datasourceUrl.substring(0,datasourceUrl.indexOf("?"));
String url02 = url01.substring(0,url01.lastIndexOf("/"));
String datasourceName = url01.substring(url01.lastIndexOf("/")+1);
// 连接已经存在的数据库,如:mysql
Connection connection = Connection(url02, username, password);
Statement statement = ateStatement();
// 创建数据库
statement.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
return datasource;
}
springboot结构}
2.建表结构,在yml⾥⾯加⼊如下配置就可以实现⾃动创建表结构
#⾃动运⾏表结构⽂件
spring:
datasource:
sql-script-encoding: utf-8
schema:  classpath:sql/table.sql
initialization-mode: always
platform: mysql
url: jdbc:mysql://localhost:3306/move_task?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useUnicode=true&useSSL=false
driverClassName: sql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
username: root
password: ******
3.table.sql⽂件内容
CREATE TABLE IF NOT EXISTS `agv_task_queue`
(
`auto_id`    bigint                                                        NOT NULL AUTO_INCREMENT COMMENT '主键id',
`task_id`    varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '任务id',    `node_num`    int                                                          NOT NULL COMMENT '排序标识',
`exec_status` int DEFAULT NULL COMMENT '执⾏状态',
PRIMARY KEY (`auto_id`)
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_general_ci;
4.测试。
启动项⽬,就能看到创建好的库和表

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。