diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/IdInfo.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/IdInfo.java index 0561fa4a..390b9cf0 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/IdInfo.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/IdInfo.java @@ -17,6 +17,8 @@ package com.mybatisflex.core.table; import com.mybatisflex.annotation.Id; import com.mybatisflex.annotation.KeyType; +import com.mybatisflex.core.FlexGlobalConfig; +import com.mybatisflex.core.util.StringUtil; public class IdInfo extends ColumnInfo { @@ -53,16 +55,38 @@ public class IdInfo extends ColumnInfo { if (Number.class.isAssignableFrom(columnInfo.getPropertyType())) { keyType = KeyType.Auto; } else { - keyType = KeyType.None; + initDefaultKeyType(); } } + public IdInfo(Id id) { this.keyType = id.keyType(); this.value = id.value(); this.before = id.before(); + + initDefaultKeyType(); } + /** + * 用户未配置 keyType 是,配置默认的 key Type + */ + private void initDefaultKeyType() { + if (this.keyType == null || this.keyType == KeyType.None) { + FlexGlobalConfig.KeyConfig defaultKeyConfig = FlexGlobalConfig.getDefaultConfig().getKeyConfig(); + if (defaultKeyConfig != null) { + if (defaultKeyConfig.getKeyType() != null) { + this.keyType = defaultKeyConfig.getKeyType(); + this.before = defaultKeyConfig.isBefore(); + } + if (StringUtil.isBlank(this.value) && StringUtil.isNotBlank(defaultKeyConfig.getValue())) { + this.value = defaultKeyConfig.getValue(); + } + } + } + } + + public KeyType getKeyType() { return keyType; } diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableInfo.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableInfo.java index 8ff6cf40..650fd308 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableInfo.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableInfo.java @@ -370,11 +370,14 @@ public class TableInfo { this.primaryColumns = new String[primaryKeyList.size()]; List insertIdFields = new ArrayList<>(); + for (int i = 0; i < primaryKeyList.size(); i++) { IdInfo idInfo = primaryKeyList.get(i); primaryColumns[i] = idInfo.getColumn(); - if (idInfo.getKeyType() != KeyType.Auto && (idInfo.getBefore() != null && idInfo.getBefore())) { + if (idInfo.getKeyType() != KeyType.Auto + || (idInfo.getBefore() != null && idInfo.getBefore()) + ) { insertIdFields.add(idInfo.getColumn()); }