diff --git a/pom.xml b/pom.xml
index 9d17db9..fc4dc8f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
com.yanghuanglin
seq
- 1.11.0
+ 1.12.0
seq
seq
@@ -34,6 +34,12 @@
42.7.3
test
+
+ com.dameng
+ DmJdbcDriver18
+ 8.1.3.140
+ test
+
junit
junit
diff --git a/src/main/java/com/yanghuanglin/seq/config/GeneratorConfig.java b/src/main/java/com/yanghuanglin/seq/config/GeneratorConfig.java
index b20e175..1a2997c 100644
--- a/src/main/java/com/yanghuanglin/seq/config/GeneratorConfig.java
+++ b/src/main/java/com/yanghuanglin/seq/config/GeneratorConfig.java
@@ -3,6 +3,8 @@ package com.yanghuanglin.seq.config;
import com.yanghuanglin.seq.enums.DbType;
import javax.sql.DataSource;
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
import java.sql.SQLException;
/**
@@ -132,8 +134,10 @@ public class GeneratorConfig {
public DbType getDbType() {
if (this.dbType == null) {
+ Connection connection = null;
try {
- String productName = this.dataSource.getConnection().getMetaData().getDatabaseProductName();
+ connection = dataSource.getConnection();
+ String productName = connection.getMetaData().getDatabaseProductName();
this.dbType = DbType.of(productName);
} catch (SQLException e) {
throw new RuntimeException("获取数据库类型失败", e);
diff --git a/src/main/java/com/yanghuanglin/seq/dao/impl/SequencesBase.java b/src/main/java/com/yanghuanglin/seq/dao/impl/SequencesBase.java
index 22f208c..89dafce 100644
--- a/src/main/java/com/yanghuanglin/seq/dao/impl/SequencesBase.java
+++ b/src/main/java/com/yanghuanglin/seq/dao/impl/SequencesBase.java
@@ -50,6 +50,7 @@ public abstract class SequencesBase {
sql = sql.replaceAll("`create_time`", String.format("`%s`", tableConfig.getCreateTimeColumn()));
break;
case Dameng:
+ case DM_DBMS:
case PostgreSQL:
case KingbaseES:
sql = sql.replaceAll("\"sequences(_unused|_unlock)\"", String.format("%s$1", tableConfig.getTable()));
@@ -79,6 +80,7 @@ public abstract class SequencesBase {
break;
case PostgreSQL:
case Dameng:
+ case DM_DBMS:
case KingbaseES:
sqlString = sqlString.replaceAll("`(.+?)`", "\"$1\"");
break;
diff --git a/src/main/java/com/yanghuanglin/seq/enums/DbType.java b/src/main/java/com/yanghuanglin/seq/enums/DbType.java
index b512cfe..6e9882f 100644
--- a/src/main/java/com/yanghuanglin/seq/enums/DbType.java
+++ b/src/main/java/com/yanghuanglin/seq/enums/DbType.java
@@ -5,6 +5,8 @@ public enum DbType {
MySQL("mysql"),
//达梦数据库
Dameng("dm"),
+ //达梦数据库
+ DM_DBMS("dm"),
//人大金仓数据库
KingbaseES("pgsql"),
//PostgreSQL数据库
@@ -28,7 +30,7 @@ public enum DbType {
*/
public static DbType of(String productName) {
for (DbType value : DbType.values()) {
- if (value.name().equalsIgnoreCase(productName)) {
+ if (value.name().equalsIgnoreCase(productName.replace(" ","_"))) {
return value;
}
}
diff --git a/src/main/resources/dm/create_table_sequences.sql b/src/main/resources/dm/create_table_sequences.sql
index 7f92767..8b67106 100644
--- a/src/main/resources/dm/create_table_sequences.sql
+++ b/src/main/resources/dm/create_table_sequences.sql
@@ -3,24 +3,11 @@ CREATE TABLE IF NOT EXISTS "sequences"
"key" VARCHAR(64) NOT NULL,
"type" VARCHAR(64) NOT NULL,
"seq" BIGINT NOT NULL,
- "update_time" TIMESTAMP,
+ "update_time" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY ("key", "type")
);
COMMENT ON TABLE "sequences" IS '当前序号表';
COMMENT ON COLUMN "sequences"."key" IS '序号英文名称';
COMMENT ON COLUMN "sequences"."type" IS '序号类型';
COMMENT ON COLUMN "sequences"."seq" IS '已使用到的序号';
-COMMENT ON COLUMN "sequences"."update_time" IS '最后使用时间';
-
-/*
-@触发器设置,功能:自动记录更新时间
-@触发器名为 SEQUENCES_UPDATE_TIME
-@触发器执行范围为每行生效
-*/
-CREATE OR REPLACE TRIGGER SEQUENCES_UPDATE_TIME BEFORE UPDATE ON "sequences" FOR EACH ROW
-BEGIN
- NEW."update_time":=SYSDATE;
-END;
-
-/*启动触发器*/
-ALTER TRIGGER SEQUENCES_UPDATE_TIME ENABLE;
\ No newline at end of file
+COMMENT ON COLUMN "sequences"."update_time" IS '最后使用时间';
\ No newline at end of file
diff --git a/src/test/java/SeqTest.java b/src/test/java/SeqTest.java
index 29b4d1b..cebc089 100644
--- a/src/test/java/SeqTest.java
+++ b/src/test/java/SeqTest.java
@@ -5,10 +5,12 @@ import com.yanghuanglin.seq.config.TableConfig;
import com.yanghuanglin.seq.generator.Generator;
import com.yanghuanglin.seq.generator.impl.SequencesGenerator;
import com.yanghuanglin.seq.po.Sequences;
+import dm.jdbc.driver.DmdbDataSource;
import org.junit.Test;
import org.postgresql.ds.PGSimpleDataSource;
import javax.sql.DataSource;
+import java.sql.DatabaseMetaData;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.ArrayBlockingQueue;
@@ -24,7 +26,7 @@ public class SeqTest {
private static final Generator generator;
static {
- dataSource = mysql();
+ dataSource = dm();
GeneratorConfig generatorConfig = new GeneratorConfig(dataSource);
System.out.println("DbType: " + generatorConfig.getDbType());
@@ -65,6 +67,14 @@ public class SeqTest {
return pgDataSource;
}
+ private static DataSource dm() {
+ DmdbDataSource dmdbDataSource = new DmdbDataSource();
+ dmdbDataSource.setURL("jdbc:dm://127.0.0.1:5236?schema=sequence");
+ dmdbDataSource.setUser("SYSDBA");
+ dmdbDataSource.setPassword("SYSDBA");
+ return dmdbDataSource;
+ }
+
@Test
public void createTable() {
generator.createTable();
@@ -137,6 +147,7 @@ public class SeqTest {
@Test
public void lockTest() {
+ generator.generate("0010001$distrainCode2024","MISSION");
Sequences sequences = new Sequences();
sequences.setKey("0010001$distrainCode2024");
sequences.setType("MISSION");