diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/mybatis/FlexDefaultResultSetHandler.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/mybatis/FlexDefaultResultSetHandler.java index bf9a84e8..f57ec50a 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/mybatis/FlexDefaultResultSetHandler.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/mybatis/FlexDefaultResultSetHandler.java @@ -15,6 +15,7 @@ */ package com.mybatisflex.core.mybatis; +import com.mybatisflex.core.util.StringUtil; import org.apache.ibatis.annotations.AutomapConstructor; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.binding.MapperMethod.ParamMap; @@ -763,53 +764,12 @@ public class FlexDefaultResultSetHandler extends DefaultResultSetHandler { ? objectFactory.create(resultType, constructorArgTypes, constructorArgs) : null; } - /** - *

将驼峰转为下划线

- *
{@code
-     *  var word = underlineByhump("helloWorld")
-     *  //word == "hello_world"
-     * }
- * @author natsufumij - */ - public static String underlineByhump(String str) { - if (str == null) { - return null; - } - StringBuilder sb = new StringBuilder(); - // 前置字符是否大写 - boolean preCharIsUpperCase = true; - // 当前字符是否大写 - boolean curreCharIsUpperCase = true; - // 下一字符是否大写 - boolean nexteCharIsUpperCase = true; - for (int i = 0; i < str.length(); i++) { - char c = str.charAt(i); - if (i > 0) { - preCharIsUpperCase = Character.isUpperCase(str.charAt(i - 1)); - } else { - preCharIsUpperCase = false; - } - curreCharIsUpperCase = Character.isUpperCase(c); - if (i < (str.length() - 1)) { - nexteCharIsUpperCase = Character.isUpperCase(str.charAt(i + 1)); - } - if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase) { - sb.append("_"); - } else if ((i != 0 && !preCharIsUpperCase) && curreCharIsUpperCase) { - sb.append("_"); - } - sb.append(Character.toLowerCase(c)); - } - return sb.toString(); - } - - private boolean applyColumnOrderBasedConstructorAutomapping(ResultSetWrapper rsw, List> constructorArgTypes, List constructorArgs, Constructor constructor, boolean foundValues) throws SQLException { for (int i = 0; i < constructor.getParameterTypes().length; i++) { Class parameterType = constructor.getParameterTypes()[i]; Parameter parameter = constructor.getParameters()[i]; - String columnName = underlineByhump(parameter.getName()); + String columnName = StringUtil.camelToUnderline(parameter.getName()); TypeHandler typeHandler = rsw.getTypeHandler(parameterType, columnName); Object value = typeHandler.getResult(rsw.getResultSet(), columnName); constructorArgTypes.add(parameterType);