Quellcode durchsuchen

优化取值逻辑

miemie vor 6 Jahren
Ursprung
Commit
13ef32079a

+ 5 - 10
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/MybatisDefaultParameterHandler.java

@@ -67,7 +67,7 @@ public class MybatisDefaultParameterHandler extends DefaultParameterHandler {
     /**
      * 反射获取BoundSql中additionalParameters参数字段
      *
-     * @return
+     * @return additionalParameters 字段
      * @see BoundSql
      */
     private static Field getAdditionalParametersField() {
@@ -86,7 +86,7 @@ public class MybatisDefaultParameterHandler extends DefaultParameterHandler {
      * 批量(填充主键 ID)
      * </p>
      *
-     * @param ms
+     * @param ms MappedStatement
      * @param parameterObject 插入数据库对象
      * @return
      */
@@ -226,11 +226,11 @@ public class MybatisDefaultParameterHandler extends DefaultParameterHandler {
         return metaObject.getOriginalObject();
     }
 
-    @SuppressWarnings({"rawtypes", "unchecked"})
     @Override
+    @SuppressWarnings({"rawtypes", "unchecked"})
     public void setParameters(PreparedStatement ps) {
         // 反射获取动态参数
-        Map<String, Object> additionalParameters = null;
+        Map<String, Object> additionalParameters = Collections.emptyMap();
         try {
             additionalParameters = (Map<String, Object>) ADDITIONAL_PARAMETERS_FIELD.get(boundSql);
         } catch (IllegalAccessException e) {
@@ -245,8 +245,7 @@ public class MybatisDefaultParameterHandler extends DefaultParameterHandler {
                     Object value;
                     String propertyName = parameterMapping.getProperty();
                     if (boundSql.hasAdditionalParameter(propertyName)) {
-                        //issue#448 ask first for additional params
-                        value = boundSql.getAdditionalParameter(propertyName);
+                        value = additionalParameters.get(propertyName);
                     } else if (parameterObject == null) {
                         value = null;
                     } else if (typeHandlerRegistry.hasTypeHandler(parameterObject.getClass())) {
@@ -254,10 +253,6 @@ public class MybatisDefaultParameterHandler extends DefaultParameterHandler {
                     } else {
                         MetaObject metaObject = configuration.newMetaObject(parameterObject);
                         value = metaObject.getValue(propertyName);
-                        if (value == null && CollectionUtils.isNotEmpty(additionalParameters)) {
-                            // issue #138
-                            value = additionalParameters.get(propertyName);
-                        }
                     }
                     TypeHandler typeHandler = parameterMapping.getTypeHandler();
                     JdbcType jdbcType = parameterMapping.getJdbcType();