Forráskód Böngészése

新增《数据升级》Demo工程

deason 3 hónapja
szülő
commit
1e505561a0

+ 43 - 0
data-upgrade-demo/pom.xml

@@ -0,0 +1,43 @@
+<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>data-upgrade-demo</artifactId>
+    <packaging>jar</packaging>
+
+    <parent>
+        <groupId>com.qmth.demo</groupId>
+        <artifactId>qmth-demo</artifactId>
+        <version>1.0.5</version>
+    </parent>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.qmth.boot</groupId>
+            <artifactId>data-upgrade</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.qmth.boot</groupId>
+            <artifactId>starter-api</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <skip>true</skip>
+                    <skipTests>true</skipTests>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 13 - 0
data-upgrade-demo/src/main/java/com/qmth/boot/data/upgrade/demo/DataUpgradeDemoApplication.java

@@ -0,0 +1,13 @@
+package com.qmth.boot.data.upgrade.demo;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class DataUpgradeDemoApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(DataUpgradeDemoApplication.class, args);
+    }
+
+}

+ 20 - 0
data-upgrade-demo/src/main/java/com/qmth/boot/data/upgrade/demo/config/ScheduleConfig.java

@@ -0,0 +1,20 @@
+package com.qmth.boot.data.upgrade.demo.config;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+@Component
+@EnableScheduling
+public class ScheduleConfig {
+
+    private static final Logger log = LoggerFactory.getLogger(ScheduleConfig.class);
+
+    @Scheduled(fixedRate = 2000)
+    public void execute() {
+        log.info("job test...");
+    }
+
+}

+ 20 - 0
data-upgrade-demo/src/main/java/com/qmth/boot/data/upgrade/demo/service/DataUpgrade_1_0_1.java

@@ -0,0 +1,20 @@
+package com.qmth.boot.data.upgrade.demo.service;
+
+import com.qmth.boot.data.upgrade.annotation.DataUpgradeVersion;
+import com.qmth.boot.data.upgrade.service.DataUpgradeService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.transaction.support.TransactionTemplate;
+
+// @DataUpgradeVersion("1.0.1")
+public class DataUpgrade_1_0_1 implements DataUpgradeService {
+
+    private static final Logger log = LoggerFactory.getLogger(DataUpgrade_1_0_1.class);
+
+    @Override
+    public void process(JdbcTemplate jdbcTemplate, TransactionTemplate transactionTemplate) throws Exception {
+        log.info("process...");
+    }
+
+}

+ 20 - 0
data-upgrade-demo/src/main/java/com/qmth/boot/data/upgrade/demo/service/DataUpgrade_1_0_3.java

@@ -0,0 +1,20 @@
+package com.qmth.boot.data.upgrade.demo.service;
+
+import com.qmth.boot.data.upgrade.annotation.DataUpgradeVersion;
+import com.qmth.boot.data.upgrade.service.DataUpgradeService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.transaction.support.TransactionTemplate;
+
+@DataUpgradeVersion("1.0.3")
+public class DataUpgrade_1_0_3 implements DataUpgradeService {
+
+    private static final Logger log = LoggerFactory.getLogger(DataUpgrade_1_0_3.class);
+
+    @Override
+    public void process(JdbcTemplate jdbcTemplate, TransactionTemplate transactionTemplate) throws Exception {
+        log.info("process...");
+    }
+
+}

+ 51 - 0
data-upgrade-demo/src/main/java/com/qmth/boot/data/upgrade/demo/service/DataUpgrade_1_0_5.java

@@ -0,0 +1,51 @@
+package com.qmth.boot.data.upgrade.demo.service;
+
+import com.qmth.boot.data.upgrade.annotation.DataUpgradeVersion;
+import com.qmth.boot.data.upgrade.service.DataUpgradeService;
+import com.qmth.boot.data.upgrade.utils.ResourceFileHelper;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.transaction.TransactionStatus;
+import org.springframework.transaction.support.TransactionCallbackWithoutResult;
+import org.springframework.transaction.support.TransactionTemplate;
+
+// @DataUpgradeVersion("1.0.5")
+public class DataUpgrade_1_0_5 implements DataUpgradeService {
+
+    private static final Logger log = LoggerFactory.getLogger(DataUpgrade_1_0_5.class);
+
+    @Override
+    public void process(JdbcTemplate jdbcTemplate, TransactionTemplate transactionTemplate) throws Exception {
+        log.info("process...");
+
+        String[] sqlList = StringUtils.split(ResourceFileHelper.readContent("upgrade/1.0.5.sql"), ";");
+        if (ArrayUtils.isEmpty(sqlList)) {
+            return;
+        }
+
+        transactionTemplate.execute(new TransactionCallbackWithoutResult() {
+            @Override
+            protected void doInTransactionWithoutResult(TransactionStatus status) {
+                try {
+                    for (String sql : sqlList) {
+                        if (StringUtils.isBlank(sql)) {
+                            continue;
+                        }
+
+                        log.info(sql);
+                        jdbcTemplate.execute(sql);
+                    }
+                } catch (Exception e) {
+                    // DML-SQL语句支持事务‌,执行失败时触发自动回滚。
+                    status.setRollbackOnly();
+                    // DDL-SQL语句不支持事务‌,执行失败时请采用其它补偿机制回滚!!!
+                    throw new RuntimeException("SQL语句执行异常!", e);
+                }
+            }
+        });
+    }
+
+}

+ 10 - 0
data-upgrade-demo/src/main/resources/application.properties

@@ -0,0 +1,10 @@
+server.port=8899
+#com.qmth.data.upgrade.base-package=com.qmth.xxx
+com.qmth.solar.app-version=1.0.5
+# db config
+com.qmth.datasource.url=jdbc:mysql://192.168.10.30:3306/qmth_boot_demo?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true
+com.qmth.datasource.username=qmth_boot_demo
+com.qmth.datasource.password=qmth_boot_demo_123
+# logger config
+com.qmth.logging.file-path=logs/demo.log
+com.qmth.logging.root-level=info

+ 0 - 0
data-upgrade-demo/src/main/resources/upgrade/1.0.3.sql


+ 14 - 0
data-upgrade-demo/src/main/resources/upgrade/1.0.5.sql

@@ -0,0 +1,14 @@
+CREATE TABLE IF NOT EXISTS t_temp
+(
+    id          BIGINT(20)  NOT NULL AUTO_INCREMENT,
+    create_time BIGINT(20)  NOT NULL,
+    name        VARCHAR(50) NOT NULL,
+    PRIMARY KEY (id)
+);
+
+INSERT INTO t_temp (name, create_time)
+VALUES ('abc', now());
+
+# INSERT INTO t_temp (id, name, create_time)
+# VALUES (1, 'abc1', now());
+