diff --git a/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/biz/BizIdHelper.java b/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/biz/BizIdHelper.java index 09fe17540296f9720f0cc9dfe85ba21273a8f1e8..79aca83404263799ebd0c75e9ea2420abcdbc5a1 100644 --- a/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/biz/BizIdHelper.java +++ b/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/biz/BizIdHelper.java @@ -1,14 +1,16 @@ package com.schbrain.framework.autoconfigure.mybatis.biz; -import com.baomidou.mybatisplus.core.metadata.TableInfo; -import com.baomidou.mybatisplus.core.metadata.TableInfoHelper; +import com.baomidou.mybatisplus.core.metadata.*; import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.schbrain.common.exception.BaseException; import com.schbrain.framework.autoconfigure.mybatis.annotation.BizId; -import org.apache.ibatis.session.Configuration; +import org.apache.commons.collections4.CollectionUtils; import java.lang.reflect.Field; +import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Collectors; /** * @author liaozan @@ -37,11 +39,17 @@ public class BizIdHelper { return annotation.value(); } TableInfo tableInfo = TableInfoHelper.getTableInfo(entityClass); - Configuration configuration = tableInfo.getConfiguration(); - if (configuration.isMapUnderscoreToCamelCase()) { - return StringUtils.camelToUnderline(bizIdField.getName()); + return getBizIdFieldInfo(tableInfo, bizIdField).getColumn(); + } + + private static TableFieldInfo getBizIdFieldInfo(TableInfo tableInfo, Field bizIdField) { + List fieldInfoList = tableInfo.getFieldList().stream() + .filter(fieldInfo -> fieldInfo.getField() == bizIdField) + .collect(Collectors.toList()); + if (CollectionUtils.isEmpty(fieldInfoList)) { + throw new BaseException(String.format("%s can not be found in fieldList", bizIdField.getName())); } - return bizIdField.getName(); + return fieldInfoList.get(0); } }