瀏覽代碼

新增可控分配 id 方法 fixed github pull/4231

hubin 3 年之前
父節點
當前提交
25ec6381f6

+ 1 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/MybatisParameterHandler.java

@@ -127,7 +127,7 @@ public class MybatisParameterHandler implements ParameterHandler {
         if (StringUtils.isNotBlank(keyProperty) && null != idType && idType.getKey() >= 3) {
             final IdentifierGenerator identifierGenerator = GlobalConfigUtils.getGlobalConfig(this.configuration).getIdentifierGenerator();
             Object idValue = metaObject.getValue(keyProperty);
-            if (StringUtils.checkValNull(idValue)) {
+            if (identifierGenerator.assignId(idValue)) {
                 if (idType.getKey() == IdType.ASSIGN_ID.getKey()) {
                     Class<?> keyType = tableInfo.getKeyType();
                     if (Number.class.isAssignableFrom(keyType)) {

+ 12 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/incrementer/IdentifierGenerator.java

@@ -17,17 +17,28 @@ package com.baomidou.mybatisplus.core.incrementer;
 
 
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 
 
 /**
  * Id生成器接口
  *
- * @author  nieqiuqiu
+ * @author nieqiuqiu
  * @since 2019-10-15
  * @since 3.3.0
  */
 public interface IdentifierGenerator {
 
+    /**
+     * 判断是否分配 ID
+     *
+     * @param idValue 主键值
+     * @return true 分配 false 无需分配
+     */
+    default boolean assignId(Object idValue) {
+        return StringUtils.checkValNull(idValue);
+    }
+
     /**
      * 生成Id
      *