Przeglądaj źródła

Merge pull request #4300 from msJavaCoder/3.0

添加vertica数据库分页支持
miemieYaho 3 lat temu
rodzic
commit
fe9658e378

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

@@ -143,6 +143,10 @@ public enum DbType {
      * Impala
      */
     IMPALA("impala", "impala数据库"),
+    /**
+     * Vertica
+     */
+    VERTICA("vertica", "vertica数据库"),
     /**
      * UNKONWN DB
      */

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

@@ -80,6 +80,8 @@ public class DialectFactory {
                 dialect = new SybaseDialect();
             } else if (dbType == DbType.GBASEDBT){
                 dialect = new GBasedbtDialect();
+            } else if (dbType == DbType.VERTICA) {
+                dialect = new VerticaDialect();
             }
             DIALECT_ENUM_MAP.put(dbType, dialect);
         }

+ 23 - 0
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/plugins/pagination/dialects/VerticaDialect.java

@@ -0,0 +1,23 @@
+package com.baomidou.mybatisplus.extension.plugins.pagination.dialects;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.DialectModel;
+
+/**
+ * Vertica 数据库分页语句组装实现
+ *
+ * @author msJava
+ * @Date 2022-02-08
+ */
+public class VerticaDialect implements IDialect{
+
+    @Override
+    public DialectModel buildPaginationSql(String originalSql, long offset, long limit) {
+        StringBuilder sql = new StringBuilder(originalSql).append(" LIMIT ").append(FIRST_MARK);
+        if (offset != 0L) {
+            sql.append(" OFFSET ").append(SECOND_MARK);
+            return new DialectModel(sql.toString(), limit, offset).setConsumerChain();
+        } else {
+            return new DialectModel(sql.toString(), limit).setConsumer(true);
+        }
+    }
+}

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

@@ -118,6 +118,8 @@ public class JdbcUtils {
             return DbType.SAP_HANA;
         } else if (url.contains(":impala:")) {
             return DbType.IMPALA;
+        } else if (url.contains(":vertica:")) {
+            return DbType.VERTICA;
         } else {
             logger.warn("The jdbcUrl is " + jdbcUrl + ", Mybatis Plus Cannot Read Database type or The Database's Not Supported!");
             return DbType.OTHER;