如果使用过**starters-jdevelops-boot-web-jap**,依赖可以忽略下面的步骤用(我默认注入了)

介绍

  • 由于我们项目JPA使用的比较多,很多时候都是直接开项目写实体之后再去手动的创建一个数据库,为了节省这步操作于是有了这玩意
    • 支持 mysql 5.7+
    • 支持 postgresql

image.png

引入依赖

<= 2.0.4

  1. <!-- 主依赖 -->
  2. <dependency>
  3. <groupId>cn.jdevelops</groupId>
  4. <artifactId>utils-spring</artifactId>
  5. <version>[2.0.2,2.0.4]</version>
  6. <!-- <version>2.0.2</version>-->
  7. </dependency>
  8. <!-- 如果项目中没有的话需要引入guava -->
  9. <dependency>
  10. <groupId>com.google.guava</groupId>
  11. <artifactId>guava</artifactId>
  12. <version>31.1-jre</version>
  13. </dependency>

2.0.5 +

  1. <!-- 主依赖 -->
  2. <dependency>
  3. <groupId>cn.jdevelops</groupId>
  4. <artifactId>caches-auto-schema</artifactId>
  5. <version>2.0.5</version>
  6. </dependency>
  7. <!-- 如果报错请引入guava(我测试没有引入没报错 -->
  8. <dependency>
  9. <groupId>com.google.guava</groupId>
  10. <artifactId>guava</artifactId>
  11. <version>31.1-jre</version>
  12. </dependency>

使用

在主函数上加入注解 @EnableAutoSchema

  1. @SpringBootApplication
  2. @EnableAutoSchema
  3. public class XxlJobAdminApplication {
  4. public static void main(String[] args) {
  5. SpringApplication.run(XxlJobAdminApplication.class, args);
  6. }
  7. }

效果

  1. 会根据你配置文件中的数据库连接地址进行自动建一个名叫test_auto_schema
  2. spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test_auto_schema?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai

image.png

其他功能

关闭自动创建功能(二选一)

1. 注释掉开启注解

@EnableAutoSchema

2. 配置文件中设置关闭

jdevelops:
database:
init-enable: true

创建数据库时直接初始化表

1. 配置文件中加入

jdevelops.database.init-script=db/**test_auto_schema**.sql

2. resources 目录下放入待初始化的sql

这个操作会覆盖上面的自动建库,所以一定要有建库语句

  • image.png ``sql CREATE database if NOT EXISTStest_auto_schemadefault character set utf8mb4 collate utf8mb4_unicode_ci; usetest_auto_schema`;

SET NAMES utf8mb4;

CREATE TABLE IF NOT EXISTS xxl_job_info ( id int(11) NOT NULL AUTO_INCREMENT, job_group int(11) NOT NULL COMMENT ‘执行器主键ID’, job_desc varchar(255) NOT NULL, add_time datetime DEFAULT NULL, update_time datetime DEFAULT NULL, author varchar(64) DEFAULT NULL COMMENT ‘作者’, alarm_email varchar(255) DEFAULT NULL COMMENT ‘报警邮件’, schedule_type varchar(50) NOT NULL DEFAULT ‘NONE’ COMMENT ‘调度类型’, schedule_conf varchar(128) DEFAULT NULL COMMENT ‘调度配置,值含义取决于调度类型’, misfire_strategy varchar(50) NOT NULL DEFAULT ‘DO_NOTHING’ COMMENT ‘调度过期策略’, executor_route_strategy varchar(50) DEFAULT NULL COMMENT ‘执行器路由策略’, executor_handler varchar(255) DEFAULT NULL COMMENT ‘执行器任务handler’, executor_param varchar(512) DEFAULT NULL COMMENT ‘执行器任务参数’, executor_block_strategy varchar(50) DEFAULT NULL COMMENT ‘阻塞处理策略’, executor_timeout int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘任务执行超时时间,单位秒’, executor_fail_retry_count int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘失败重试次数’, glue_type varchar(50) NOT NULL COMMENT ‘GLUE类型’, glue_source mediumtext COMMENT ‘GLUE源代码’, glue_remark varchar(128) DEFAULT NULL COMMENT ‘GLUE备注’, glue_updatetime datetime DEFAULT NULL COMMENT ‘GLUE更新时间’, child_jobid varchar(255) DEFAULT NULL COMMENT ‘子任务ID,多个逗号分隔’, trigger_status tinyint(4) NOT NULL DEFAULT ‘0’ COMMENT ‘调度状态:0-停止,1-运行’, trigger_last_time bigint(13) NOT NULL DEFAULT ‘0’ COMMENT ‘上次调度时间’, trigger_next_time bigint(13) NOT NULL DEFAULT ‘0’ COMMENT ‘下次调度时间’, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ```

注意事项

  1. postgresql 在2.0.6之前存在 url只能写成(jdbc:postgresql://127.0.0.1:5432/test_auto_schema)
    1. 后面跟参数会报错
    2. 2.0.6 修复了这个问题

示例项目地址

https://github.com/en-o/Jdevelops-Example/tree/main/AutoSchema