您好,欢迎来到六九路网。
搜索
您的当前位置:首页SpringBoot项目启动自动创库建表

SpringBoot项目启动自动创库建表

来源:六九路网
SpringBoot项⽬启动⾃动创库建表

平时在⽤SpringBoot开发时我们需⽤连接数据库,⾸先我们都是先创好数据库名和表结构,然后在YML配置好数据库名,这样⼗分的不⽅便,有没有⼀种⽅式在SpringBoot启动时就把库表创建好呢?今天为⼤家介绍⼀种⽅式:

1.先创建数据库,⾃定义⼀个配置类(DataSourceConfig),⾥⾯获取YML⾥⾯的数据库配置信息,然后通过Druid连接数据库,运⾏建库语句

@Configuration

@Primary //在同样的DataSource中,⾸先使⽤被标注的DataSourcepublic class DataSourceConfig {

private Logger log = LoggerFactory.getLogger(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 = DriverManager.getConnection(url02, username, password); Statement statement = connection.createStatement();

// 创建数据库

statement.executeUpdate(\"create database if not exists `\" + datasourceName + \"` default character set utf8 COLLATE utf8_general_ci\"); statement.close(); connection.close(); } catch (Exception e) { e.printStackTrace(); }

return datasource; }}

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: com.mysql.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.测试。

启动项⽬,就能看到创建好的库和表

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务