Parcourir la source

主键支持 IdWorker 字符串类型

= il y a 7 ans
Parent
commit
8d4bb1e5a8

+ 2 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/MybatisDefaultParameterHandler.java

@@ -215,6 +215,8 @@ public class MybatisDefaultParameterHandler extends DefaultParameterHandler {
                 if (StringUtils.checkValNull(idValue)) {
                 if (StringUtils.checkValNull(idValue)) {
                     if (tableInfo.getIdType() == IdType.ID_WORKER) {
                     if (tableInfo.getIdType() == IdType.ID_WORKER) {
                         metaObject.setValue(tableInfo.getKeyProperty(), IdWorker.getId());
                         metaObject.setValue(tableInfo.getKeyProperty(), IdWorker.getId());
+                    } else if (tableInfo.getIdType() == IdType.ID_WORKER_STR) {
+                        metaObject.setValue(tableInfo.getKeyProperty(), IdWorker.getIdStr());
                     } else if (tableInfo.getIdType() == IdType.UUID) {
                     } else if (tableInfo.getIdType() == IdType.UUID) {
                         metaObject.setValue(tableInfo.getKeyProperty(), IdWorker.get32UUID());
                         metaObject.setValue(tableInfo.getKeyProperty(), IdWorker.get32UUID());
                     }
                     }

+ 45 - 15
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/entity/GlobalConfiguration.java

@@ -44,35 +44,65 @@ import com.baomidou.mybatisplus.toolkit.StringUtils;
  */
  */
 public class GlobalConfiguration implements Serializable {
 public class GlobalConfiguration implements Serializable {
 
 
-    // 逻辑删除全局值
+    /**
+     * 逻辑删除全局值
+     */
     private String logicDeleteValue = null;
     private String logicDeleteValue = null;
-    // 逻辑未删除全局值
+    /**
+     * 逻辑未删除全局值
+     */
     private String logicNotDeleteValue = null;
     private String logicNotDeleteValue = null;
-    // 数据库类型
+    /**
+     * 数据库类型
+     */
     private DBType dbType;
     private DBType dbType;
-    // 主键类型(默认 ID_WORKER)
+    /**
+     * 主键类型(默认 ID_WORKER)
+     */
     private IdType idType = IdType.ID_WORKER;
     private IdType idType = IdType.ID_WORKER;
-    // 表名、字段名、是否使用下划线命名(默认 false)
+    /**
+     * 表名、字段名、是否使用下划线命名(默认 false)
+     */
     private boolean dbColumnUnderline = false;
     private boolean dbColumnUnderline = false;
-    // SQL注入器
+    /**
+     * SQL注入器
+     */
     private ISqlInjector sqlInjector;
     private ISqlInjector sqlInjector;
-    // 表关键词 key 生成器
+    /**
+     * 表关键词 key 生成器
+     */
     private IKeyGenerator keyGenerator;
     private IKeyGenerator keyGenerator;
-    // 元对象字段填充控制器
+    /**
+     * 元对象字段填充控制器
+     */
     private MetaObjectHandler metaObjectHandler = new DefaultMetaObjectHandler();
     private MetaObjectHandler metaObjectHandler = new DefaultMetaObjectHandler();
-    // 字段验证策略
+    /**
+     * 字段验证策略
+     */
     private FieldStrategy fieldStrategy = FieldStrategy.NOT_NULL;
     private FieldStrategy fieldStrategy = FieldStrategy.NOT_NULL;
-    // 是否刷新mapper
+    /**
+     * 是否刷新mapper
+     */
     private boolean isRefresh = false;
     private boolean isRefresh = false;
-    // 是否大写命名
+    /**
+     * 是否大写命名
+     */
     private boolean isCapitalMode = false;
     private boolean isCapitalMode = false;
-    // 标识符
+    /**
+     * 标识符
+     */
     private String identifierQuote;
     private String identifierQuote;
-    // 缓存当前Configuration的SqlSessionFactory
+    /**
+     * 缓存当前Configuration的SqlSessionFactory
+     */
     private SqlSessionFactory sqlSessionFactory;
     private SqlSessionFactory sqlSessionFactory;
-    // 缓存已注入CRUD的Mapper信息
+    /**
+     * 缓存已注入CRUD的Mapper信息
+     */
     private Set<String> mapperRegistryCache = new ConcurrentSkipListSet<>();
     private Set<String> mapperRegistryCache = new ConcurrentSkipListSet<>();
-    // 单例重用SqlSession
+    /**
+     * 单例重用SqlSession
+     */
     private SqlSession sqlSession;
     private SqlSession sqlSession;
 
 
     public GlobalConfiguration() {
     public GlobalConfiguration() {

+ 2 - 1
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/enums/IdType.java

@@ -27,7 +27,8 @@ public enum IdType {
     AUTO(0, "数据库ID自增"), INPUT(1, "用户输入ID"),
     AUTO(0, "数据库ID自增"), INPUT(1, "用户输入ID"),
 
 
     /* 以下2种类型、只有当插入对象ID 为空,才自动填充。 */
     /* 以下2种类型、只有当插入对象ID 为空,才自动填充。 */
-    ID_WORKER(2, "全局唯一ID"), UUID(3, "全局唯一ID"), NONE(4, "该类型为未设置主键类型");
+    ID_WORKER(2, "全局唯一ID"), UUID(3, "全局唯一ID"), NONE(4, "该类型为未设置主键类型"),
+    ID_WORKER_STR(5, "字符串全局唯一ID");
 
 
     /**
     /**
      * 主键
      * 主键

+ 5 - 1
mybatis-plus-support/src/main/java/com/baomidou/mybatisplus/toolkit/IdWorker.java

@@ -37,6 +37,10 @@ public class IdWorker {
         return worker.nextId();
         return worker.nextId();
     }
     }
 
 
+    public static String getIdStr() {
+        return String.valueOf(worker.nextId());
+    }
+
     /**
     /**
      * <p>
      * <p>
      * 获取去掉"-" UUID
      * 获取去掉"-" UUID
@@ -46,4 +50,4 @@ public class IdWorker {
         return UUID.randomUUID().toString().replace("-", "");
         return UUID.randomUUID().toString().replace("-", "");
     }
     }
 
 
-}
+}