Selaa lähdekoodia

增加支持hive2分页查询功能

dongwei 2 kuukautta sitten
vanhempi
commit
d4ff30c4de

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

@@ -226,6 +226,10 @@ public enum DbType {
      * yasdb
      */
     YASDB("yasdb", "崖山数据库"),
+    /**
+     * Hadoop的数据仓库
+     */
+    HIVE2("hive2", "Hadoop数据仓库"),
     /**
      * UNKNOWN DB
      */

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

@@ -73,6 +73,8 @@ public class DialectFactory {
             } else if (dbType == DbType.TRINO
                 || dbType == DbType.PRESTO) {
                 dialect = new TrinoDialect();
+            } else if (dbType == DbType.HIVE2) {
+                dialect = new Hive2Dialect();
             }
             DIALECT_ENUM_MAP.put(dbType, dialect);
         }

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

@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2011-2025, 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.plugins.pagination.dialects;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.DialectModel;
+
+/**
+ * DB2 数据库分页方言
+ *
+ * @author hubin
+ * @since 2016-11-10
+ */
+public class Hive2Dialect implements IDialect {
+
+    @Override
+    public DialectModel buildPaginationSql(String originalSql, long offset, long limit) {
+        long firstParam = offset + 1;
+        long secondParam = limit;
+        /**
+         * select * from ( select t.*,ROW_NUMBER() OVER(ORDER BY INNER_NO) AS row_num FROM ("
+         * +sqlcmd+") t ) a offset "+startNo+" rows fetch next "+fetchCount+" rows only
+         */
+        String sql = "SELECT a.* FROM (SELECT TMP_PAGE.*,ROW_NUMBER() OVER() AS ROW_ID FROM ( "
+            + originalSql +
+            " ) TMP_PAGE) a OFFSET "
+            + firstParam
+            + " ROWS FETCH NEXT "
+            + secondParam + " ROWS ONLY";
+        return new DialectModel(sql);
+    }
+}

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

@@ -153,6 +153,8 @@ public class JdbcUtils {
             return DbType.DUCKDB;
         } else if (url.contains(":yasdb:")) {
             return DbType.YASDB;
+        } else if (url.contains(":hive2:") || url.contains(":inceptor2:")) {
+            return DbType.HIVE2;
         } else {
             logger.warn("The jdbcUrl is " + jdbcUrl + ", Mybatis Plus Cannot Read Database type or The Database's Not Supported!");
             return DbType.OTHER;