Browse Source

添加对Lealone数据库的支持

zhoujin7 2 năm trước cách đây
mục cha
commit
646a89e599

+ 5 - 0
mybatis-plus-annotation/src/main/java/com/baomidou/mybatisplus/annotation/DbType.java

@@ -192,6 +192,11 @@ public enum DbType {
      */
     UXDB("uxdb", "优炫数据库"),
 
+    /**
+     * lealone
+     */
+    LEALONE("lealone", "Lealone数据库"),
+
     /**
      * UNKNOWN DB
      */

+ 38 - 0
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/incrementer/LealoneKeyGenerator.java

@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2011-2022, baomidou (jobob@qq.com).
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.baomidou.mybatisplus.extension.incrementer;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;
+
+/**
+ * Lealone Sequence
+ *
+ * @author zhoujin7
+ * @since 2023-05-10
+ */
+public class LealoneKeyGenerator implements IKeyGenerator {
+
+    @Override
+    public String executeSql(String incrementerName) {
+        return "select nextval('" + incrementerName + "')";
+    }
+
+    @Override
+    public DbType dbType() {
+        return DbType.LEALONE;
+    }
+}

+ 1 - 0
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/plugins/pagination/DialectFactory.java

@@ -59,6 +59,7 @@ public class DialectFactory {
             // postgresql same type
             else if (dbType == DbType.POSTGRE_SQL
                 || dbType == DbType.H2
+                || dbType == DbType.LEALONE
                 || dbType == DbType.SQLITE
                 || dbType == DbType.HSQL
                 || dbType == DbType.KINGBASE_ES

+ 2 - 0
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/toolkit/JdbcUtils.java

@@ -85,6 +85,8 @@ public class JdbcUtils {
             return DbType.SQLITE;
         } else if (url.contains(":h2:")) {
             return DbType.H2;
+        } else if (url.contains(":lealone:")) {
+            return DbType.LEALONE;
         } else if (regexFind(":dm\\d*:", url)) {
             return DbType.DM;
         } else if (url.contains(":xugu:")) {

+ 2 - 0
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/DataSourceConfig.java

@@ -175,6 +175,8 @@ public class DataSourceConfig {
             return DbType.SQLITE;
         } else if (str.contains(":h2:")) {
             return DbType.H2;
+        } else if (str.contains(":lealone:")) {
+            return DbType.LEALONE;
         } else if (str.contains(":kingbase:") || str.contains(":kingbase8:")) {
             return DbType.KINGBASE_ES;
         } else if (str.contains(":dm:")) {

+ 1 - 0
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/querys/DbQueryRegistry.java

@@ -37,6 +37,7 @@ public class DbQueryRegistry {
         db_query_enum_map.put(DbType.DB2, new DB2Query());
         db_query_enum_map.put(DbType.MARIADB, new MariadbQuery());
         db_query_enum_map.put(DbType.H2, new H2Query());
+        db_query_enum_map.put(DbType.LEALONE, new H2Query());
         db_query_enum_map.put(DbType.SQLITE, new SqliteQuery());
         db_query_enum_map.put(DbType.DM, new DMQuery());
         db_query_enum_map.put(DbType.KINGBASE_ES, new KingbaseESQuery());

+ 2 - 2
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/query/SQLQuery.java

@@ -99,7 +99,7 @@ public class SQLQuery extends AbstractDatabaseQuery {
             Map<String, DatabaseMetaDataWrapper.Column> columnsInfoMap = databaseMetaDataWrapper.getColumnsInfo(tableName, false);
             String tableFieldsSql = dbQuery.tableFieldsSql(tableName);
             Set<String> h2PkColumns = new HashSet<>();
-            if (DbType.H2 == dbType) {
+            if (DbType.H2 == dbType || DbType.LEALONE == dbType) {
                 dbQuery.execute(String.format(H2Query.PK_QUERY_SQL, tableName), result -> {
                     String primaryKey = result.getStringResult(dbQuery.fieldKey());
                     if (Boolean.parseBoolean(primaryKey)) {
@@ -115,7 +115,7 @@ public class SQLQuery extends AbstractDatabaseQuery {
                 // 设置字段的元数据信息
                 TableField.MetaInfo metaInfo = new TableField.MetaInfo(columnInfo, tableInfo);
                 // 避免多重主键设置,目前只取第一个找到ID,并放到list中的索引为0的位置
-                boolean isId = DbType.H2 == dbType ? h2PkColumns.contains(columnName) : result.isPrimaryKey();
+                boolean isId = (DbType.H2 == dbType || DbType.LEALONE == dbType) ? h2PkColumns.contains(columnName) : result.isPrimaryKey();
                 // 处理ID
                 if (isId) {
                     field.primaryKey(dbQuery.isKeyIdentity(result.getResultSet()));