Selaa lähdekoodia

增加显示加载驱动方法.

nieqiurong 8 kuukautta sitten
vanhempi
commit
f6f98718f3

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

@@ -16,6 +16,7 @@
 package com.baomidou.mybatisplus.generator.config;
 
 import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.core.toolkit.ClassUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
 import com.baomidou.mybatisplus.generator.config.converts.TypeConverts;
@@ -127,6 +128,13 @@ public class DataSourceConfig {
      */
     private ITypeConvertHandler typeConvertHandler;
 
+    /**
+     * 驱动全类名
+     *
+     * @since 3.5.8
+     */
+    private String driverClassName;
+
     /**
      * 获取数据库查询
      */
@@ -136,8 +144,7 @@ public class DataSourceConfig {
             DbType dbType = getDbType();
             DbQueryRegistry dbQueryRegistry = new DbQueryRegistry();
             // 默认 MYSQL
-            dbQuery = Optional.ofNullable(dbQueryRegistry.getDbQuery(dbType))
-                .orElseGet(() -> dbQueryRegistry.getDbQuery(DbType.MYSQL));
+            dbQuery = Optional.ofNullable(dbQueryRegistry.getDbQuery(dbType)).orElseGet(() -> dbQueryRegistry.getDbQuery(DbType.MYSQL));
         }
         return dbQuery;
     }
@@ -331,6 +338,11 @@ public class DataSourceConfig {
         return typeConvertHandler;
     }
 
+    @Nullable
+    public String getDriverClassName() {
+        return driverClassName;
+    }
+
     /**
      * 数据库配置构建者
      *
@@ -466,6 +478,19 @@ public class DataSourceConfig {
             return this;
         }
 
+        /**
+         * 指定连接驱动
+         * <li>对于一些老驱动(低于4.0规范)没有实现SPI不能自动加载的,手动指定加载让其初始化注册到驱动列表去.</li>
+         *
+         * @param className 驱动全类名
+         * @return this
+         * @since 3.5.8
+         */
+        public Builder driverClassName(@NotNull String className) {
+            ClassUtils.toClassConfident(className);
+            this.dataSourceConfig.driverClassName = className;
+            return this;
+        }
 
         /**
          * 构建数据库配置

+ 13 - 0
mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/generator/config/DataSourceConfigTest.java

@@ -33,6 +33,19 @@ public class DataSourceConfigTest {
         Assertions.assertEquals(dataSourceConfig.getSchemaName(), "mp");
         Assertions.assertEquals(dataSourceConfig.getDbType(), DbType.H2);
         Assertions.assertEquals(dataSourceConfig.getDbQuery().getClass(), MySqlQuery.class);
+        Assertions.assertNotNull(dataSourceConfig.getKeyWordsHandler());
+        Assertions.assertEquals(dataSourceConfig.getKeyWordsHandler().getClass(), MySqlKeyWordsHandler.class);
+        Assertions.assertEquals(dataSourceConfig.getTypeConvert().getClass(), PostgreSqlTypeConvert.class);
+
+        dataSourceConfig = new DataSourceConfig.Builder("jdbc:h2:mem:test;MODE=mysql;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE", "sa", "")
+            .dbQuery(new MySqlQuery()).schema("mp").keyWordsHandler(new MySqlKeyWordsHandler()).typeConvert(new PostgreSqlTypeConvert())
+            .driverClassName("org.h2.Driver")
+            .build();
+        Assertions.assertEquals(dataSourceConfig.getSchemaName(), "mp");
+        Assertions.assertEquals(dataSourceConfig.getDbType(), DbType.H2);
+        Assertions.assertEquals(dataSourceConfig.getDbQuery().getClass(), MySqlQuery.class);
+        Assertions.assertNotNull(dataSourceConfig.getKeyWordsHandler());
+        Assertions.assertEquals(dataSourceConfig.getDriverClassName(), "org.h2.Driver");
         Assertions.assertEquals(dataSourceConfig.getKeyWordsHandler().getClass(), MySqlKeyWordsHandler.class);
         Assertions.assertEquals(dataSourceConfig.getTypeConvert().getClass(), PostgreSqlTypeConvert.class);
     }