Przeglądaj źródła

fixed github issues/360 gitee issues/IMIHN IM6GM

hubin 6 lat temu
rodzic
commit
9adbcf3443

+ 1 - 1
mybatis-plus-boot-starter/src/main/java/com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.java

@@ -186,7 +186,7 @@ public class MybatisPlusAutoConfiguration {
         if (null != configuration) {
         if (null != configuration) {
             configuration.setDefaultScriptingLanguage(MybatisXMLLanguageDriver.class);
             configuration.setDefaultScriptingLanguage(MybatisXMLLanguageDriver.class);
         }
         }
-        factory.setConfiguration(configuration.printBanner(this.properties.getGlobalConfig().isBanner()));
+        factory.setConfiguration(configuration.init(this.properties.getGlobalConfig()));
     }
     }
 
 
     @Bean
     @Bean

+ 11 - 3
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/MybatisConfiguration.java

@@ -22,7 +22,9 @@ import org.apache.ibatis.mapping.MappedStatement;
 import org.apache.ibatis.session.Configuration;
 import org.apache.ibatis.session.Configuration;
 import org.apache.ibatis.session.SqlSession;
 import org.apache.ibatis.session.SqlSession;
 
 
+import com.baomidou.mybatisplus.core.config.GlobalConfig;
 import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
 import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -54,10 +56,16 @@ public class MybatisConfiguration extends Configuration {
     }
     }
 
 
     /**
     /**
-     * 打印 LOGO
+     * 配置初始化
      */
      */
-    public MybatisConfiguration printBanner(boolean print) {
-        if (print) {
+    public MybatisConfiguration init(GlobalConfig globalConfig) {
+        // 初始化 Sequence
+        if (null != globalConfig.getWorkerId()
+            && null != globalConfig.getDatacenterId()) {
+            IdWorker.initSequence(globalConfig.getWorkerId(), globalConfig.getDatacenterId());
+        }
+        // 打印 Banner
+        if (globalConfig.isBanner()) {
             System.out.println(" _ _   |_  _ _|_. ___ _ |    _ ");
             System.out.println(" _ _   |_  _ _|_. ___ _ |    _ ");
             System.out.println("| | |\\/|_)(_| | |_\\  |_)||_|_\\ ");
             System.out.println("| | |\\/|_)(_| | |_\\  |_)||_|_\\ ");
             System.out.println("     /               |         ");
             System.out.println("     /               |         ");

+ 9 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/config/GlobalConfig.java

@@ -28,6 +28,7 @@ import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
 import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;
 import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;
 import com.baomidou.mybatisplus.core.injector.ISqlInjector;
 import com.baomidou.mybatisplus.core.injector.ISqlInjector;
 import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
 import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
+
 import lombok.Data;
 import lombok.Data;
 import lombok.experimental.Accessors;
 import lombok.experimental.Accessors;
 
 
@@ -56,6 +57,14 @@ public class GlobalConfig implements Serializable {
      * 缓存 Sql 解析初始化
      * 缓存 Sql 解析初始化
      */
      */
     private boolean sqlParserCache = false;
     private boolean sqlParserCache = false;
+    /**
+     * 机器 ID 部分
+     */
+    private Long workerId;
+    /**
+     * 数据标识 ID 部分
+     */
+    private Long datacenterId;
     /**
     /**
      * 数据库相关配置
      * 数据库相关配置
      */
      */

+ 13 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/IdWorker.java

@@ -31,7 +31,7 @@ public class IdWorker {
     /**
     /**
      * 主机和进程的机器码
      * 主机和进程的机器码
      */
      */
-    private static final Sequence WORKER = new Sequence();
+    private static Sequence WORKER = new Sequence();
 
 
     public static long getId() {
     public static long getId() {
         return WORKER.nextId();
         return WORKER.nextId();
@@ -41,6 +41,18 @@ public class IdWorker {
         return String.valueOf(WORKER.nextId());
         return String.valueOf(WORKER.nextId());
     }
     }
 
 
+    /**
+     * <p>
+     * 有参构造器
+     * </p>
+     *
+     * @param workerId     工作机器 ID
+     * @param datacenterId 序列号
+     */
+    public static void initSequence(long workerId, long datacenterId) {
+        WORKER = new Sequence(workerId, datacenterId);
+    }
+
     /**
     /**
      * <p>
      * <p>
      * 获取去掉"-" UUID
      * 获取去掉"-" UUID

+ 4 - 4
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/Sequence.java

@@ -15,14 +15,14 @@
  */
  */
 package com.baomidou.mybatisplus.core.toolkit;
 package com.baomidou.mybatisplus.core.toolkit;
 
 
-import org.apache.ibatis.logging.Log;
-import org.apache.ibatis.logging.LogFactory;
-
 import java.lang.management.ManagementFactory;
 import java.lang.management.ManagementFactory;
 import java.net.InetAddress;
 import java.net.InetAddress;
 import java.net.NetworkInterface;
 import java.net.NetworkInterface;
 import java.util.concurrent.ThreadLocalRandom;
 import java.util.concurrent.ThreadLocalRandom;
 
 
+import org.apache.ibatis.logging.Log;
+import org.apache.ibatis.logging.LogFactory;
+
 /**
 /**
  * <p>
  * <p>
  * 分布式高效有序ID生产黑科技(sequence) <br>
  * 分布式高效有序ID生产黑科技(sequence) <br>
@@ -83,7 +83,7 @@ public class Sequence {
      * 有参构造器
      * 有参构造器
      * </p>
      * </p>
      *
      *
-     * @param workerId     工作机器ID
+     * @param workerId     工作机器 ID
      * @param datacenterId 序列号
      * @param datacenterId 序列号
      */
      */
     public Sequence(long workerId, long datacenterId) {
     public Sequence(long workerId, long datacenterId) {

+ 1 - 1
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/spring/MybatisSqlSessionFactoryBean.java

@@ -430,7 +430,7 @@ public class MybatisSqlSessionFactoryBean implements FactoryBean<SqlSessionFacto
                 LOGGER.debug("Property 'configuration' or 'configLocation' not specified, using default MyBatis Configuration");
                 LOGGER.debug("Property 'configuration' or 'configLocation' not specified, using default MyBatis Configuration");
             }
             }
             // TODO 使用自定义配置
             // TODO 使用自定义配置
-            configuration = new MybatisConfiguration().printBanner(this.globalConfig.isBanner());
+            configuration = new MybatisConfiguration().init(this.globalConfig);
             if (this.configurationProperties != null) {
             if (this.configurationProperties != null) {
                 configuration.setVariables(this.configurationProperties);
                 configuration.setVariables(this.configurationProperties);
             }
             }