fix 主键字段映射错误

This commit is contained in:
yulichang 2021-12-03 23:05:13 +08:00
parent 6c60769c5e
commit 14a0448b6a
6 changed files with 23 additions and 23 deletions

View File

@ -17,7 +17,6 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 字段属性
@ -162,9 +161,14 @@ public class MPJTableFieldInfo {
}
private void initBindField(String bindName) {
Field field = TableInfoHelper.getTableInfo(this.joinClass).getFieldList().stream()
TableInfo info = TableInfoHelper.getTableInfo(this.joinClass);
Field field = info.getFieldList().stream()
.filter(i -> i.getColumn().equals(bindName))
.map(TableFieldInfo::getField).findFirst().orElse(null);
if (field == null && bindName.equals(info.getKeyColumn())) {
this.bindField = ReflectionKit.getFieldList(joinClass).stream().filter(f ->
f.getName().equals(info.getKeyProperty())).findFirst().orElse(null);
}
if (field == null) {
throw new MPJException("字段不存在 " + this.joinClass.getName() + " " + bindName);
}

View File

@ -7,7 +7,6 @@ import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.github.yulichang.config.InterceptorConfig;
import com.github.yulichang.interfaces.MPJBaseJoin;
import com.github.yulichang.method.MPJResultType;
import com.github.yulichang.toolkit.Constant;

View File

@ -1,7 +1,6 @@
package com.github.yulichang.method;
import com.baomidou.mybatisplus.core.metadata.TableInfo;
import com.baomidou.mybatisplus.core.toolkit.sql.SqlScriptUtils;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.mapping.SqlSource;

View File

@ -36,12 +36,11 @@ public enum SqlMethod {
"<script>\n%s SELECT %s FROM %s %s %s %s %s\n</script>");
private final String method;
private final String desc;
private final String sql;
@SuppressWarnings("unused")
SqlMethod(String method, String desc, String sql) {
this.method = method;
this.desc = desc;
this.sql = sql;
}
@ -49,9 +48,6 @@ public enum SqlMethod {
return method;
}
public String getDesc() {
return desc;
}
public String getSql() {
return sql;

View File

@ -186,6 +186,7 @@ public class MPJLambdaQueryWrapper<T> extends AbstractLambdaWrapper<T, MPJLambda
* @param clazz 表实体
* @param as 表别名
*/
@SuppressWarnings("DuplicatedCode")
public final MPJLambdaQueryWrapper<T> selectAll(Class<?> clazz, String as) {
TableInfo info = TableInfoHelper.getTableInfo(clazz);
Assert.notNull(info, "can not find table info");
@ -251,4 +252,4 @@ public class MPJLambdaQueryWrapper<T> extends AbstractLambdaWrapper<T, MPJLambda
}
return typedThis;
}
}
}

View File

@ -15,15 +15,16 @@
*/
package com.github.yulichang.toolkit;
import com.baomidou.mybatisplus.core.toolkit.*;
import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.baomidou.mybatisplus.core.toolkit.ClassUtils;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.ExceptionUtils;
import org.apache.ibatis.logging.Log;
import org.apache.ibatis.logging.LogFactory;
import org.springframework.core.GenericTypeResolver;
import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.security.AccessController;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
@ -140,11 +141,11 @@ public final class ReflectionKit {
* 中间表实体重写父类属性 ` private transient Date createTime; `
*/
return fieldMap.values().stream()
/* 过滤静态属性 */
.filter(f -> !Modifier.isStatic(f.getModifiers()))
/* 过滤 transient关键字修饰的属性 */
.filter(f -> !Modifier.isTransient(f.getModifiers()))
.collect(Collectors.toList());
/* 过滤静态属性 */
.filter(f -> !Modifier.isStatic(f.getModifiers()))
/* 过滤 transient关键字修饰的属性 */
.filter(f -> !Modifier.isTransient(f.getModifiers()))
.collect(Collectors.toList());
});
}
@ -159,12 +160,12 @@ public final class ReflectionKit {
public static Map<String, Field> excludeOverrideSuperField(Field[] fields, List<Field> superFieldList) {
// 子类属性
Map<String, Field> fieldMap = Stream.of(fields).collect(toMap(Field::getName, identity(),
(u, v) -> {
throw new IllegalStateException(String.format("Duplicate key %s", u));
},
LinkedHashMap::new));
(u, v) -> {
throw new IllegalStateException(String.format("Duplicate key %s", u));
},
LinkedHashMap::new));
superFieldList.stream().filter(field -> !fieldMap.containsKey(field.getName()))
.forEach(f -> fieldMap.put(f.getName(), f));
.forEach(f -> fieldMap.put(f.getName(), f));
return fieldMap;
}