mirror of
https://github.com/continew-org/continew-admin.git
synced 2025-09-24 20:57:21 +08:00
优化:优化成员变量相关注释及部分操作写法
成员变量有时候会被称为 Field 有时候会被称为 Property,它们的区别如下: 1.Field:Field 是 Java 反射中描述类的属性信息的类。成员变量(Instance Variable)就是定义的字段(Field),例如 private String name;。Field 可以获取当前对象的成员变量的类型,对成员变量重新设值等。使用 Field 可以直接操作类的属性,不需要通过 getter 和 setter 方法,但是需要了解反射机制。 2.Property:Property 是成员变量的 getter 和 setter 方法。例如,public String getName() { return name; } 和 public void setName(String name) { this.name = name; } 分别是获取和设置 MyField 类中的实例变量 name 的 getter 和 setter 方法。使用 Property 可以在类的外部访问和修改类的属性,但是需要注意访问权限和数据类型的正确性。 综上所述,Field 和 Property 都可以用来表示 Java 类中的成员变量,选择哪种方式取决于具体的应用场景和需求。如果需要直接操作类的属性,可以使用 Field;如果需要在类的外部访问和修改类的属性,可以使用 Property。 个人理解:从 MyBatis 的映射角度来说,column 表示数据库表列/字段,property 表示 Java 对象属性/字段,所以此前在涉及到 MyBatis 操作时,尽可能多的用了 Property 而不是 Field。但除了 MyBatis 之外还有很多地方也需要用到成员变量,与其纠结 Field 还是 Property,那就用 Field,简单粗暴一点。
This commit is contained in:
@@ -19,6 +19,8 @@ package top.charles7c.cnadmin.common.util;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import lombok.AccessLevel;
|
||||
import lombok.NoArgsConstructor;
|
||||
@@ -44,9 +46,9 @@ public class ReflectUtils {
|
||||
* @throws SecurityException
|
||||
* 安全检查异常
|
||||
*/
|
||||
public static String[] getNonStaticFieldsName(Class<?> beanClass) throws SecurityException {
|
||||
Field[] nonStaticFields = getNonStaticFields(beanClass);
|
||||
return Arrays.stream(nonStaticFields).map(Field::getName).toArray(String[]::new);
|
||||
public static List<String> getNonStaticFieldsName(Class<?> beanClass) throws SecurityException {
|
||||
List<Field> nonStaticFields = getNonStaticFields(beanClass);
|
||||
return nonStaticFields.stream().map(Field::getName).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -59,8 +61,8 @@ public class ReflectUtils {
|
||||
* @throws SecurityException
|
||||
* 安全检查异常
|
||||
*/
|
||||
public static Field[] getNonStaticFields(Class<?> beanClass) throws SecurityException {
|
||||
public static List<Field> getNonStaticFields(Class<?> beanClass) throws SecurityException {
|
||||
Field[] fields = ReflectUtil.getFields(beanClass);
|
||||
return Arrays.stream(fields).filter(f -> !Modifier.isStatic(f.getModifiers())).toArray(Field[]::new);
|
||||
return Arrays.stream(fields).filter(f -> !Modifier.isStatic(f.getModifiers())).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
|
@@ -41,7 +41,7 @@ import top.charles7c.cnadmin.common.util.validate.CheckUtils;
|
||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public class TreeUtils {
|
||||
|
||||
/** 默认属性配置对象(根据前端树结构灵活调整名称) */
|
||||
/** 默认字段配置对象(根据前端树结构灵活调整名称) */
|
||||
public static final TreeNodeConfig DEFAULT_CONFIG =
|
||||
TreeNodeConfig.DEFAULT_CONFIG.setNameKey("title").setIdKey("key").setWeightKey("sort");
|
||||
|
||||
|
@@ -18,7 +18,6 @@ package top.charles7c.cnadmin.common.util.helper;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import lombok.AccessLevel;
|
||||
@@ -32,6 +31,7 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
|
||||
import top.charles7c.cnadmin.common.annotation.Query;
|
||||
import top.charles7c.cnadmin.common.util.ReflectUtils;
|
||||
|
||||
/**
|
||||
* 查询助手
|
||||
@@ -61,38 +61,19 @@ public class QueryHelper {
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
// 获取查询条件中所有的属性(包括私有的和父类的)
|
||||
List<Field> fieldList = getFieldList(query.getClass(), new ArrayList<>());
|
||||
// 获取查询条件中所有的字段
|
||||
List<Field> fieldList = ReflectUtils.getNonStaticFields(query.getClass());
|
||||
fieldList.forEach(field -> buildQuery(query, field, queryWrapper));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定类型的所有属性(包括私有的和父类的)
|
||||
*
|
||||
* @param clazz
|
||||
* 指定类型
|
||||
* @param fieldList
|
||||
* 属性列表
|
||||
* @param <Q>
|
||||
* 查询条件数据类型
|
||||
* @return 属性列表(包括私有的和父类的)
|
||||
*/
|
||||
public static <Q> List<Field> getFieldList(Class<Q> clazz, List<Field> fieldList) {
|
||||
if (clazz != null) {
|
||||
fieldList.addAll(Arrays.asList(clazz.getDeclaredFields()));
|
||||
getFieldList(clazz.getSuperclass(), fieldList);
|
||||
}
|
||||
return fieldList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建 MyBatis Plus 查询条件封装对象
|
||||
*
|
||||
* @param query
|
||||
* 查询条件
|
||||
* @param field
|
||||
* 属性
|
||||
* 字段
|
||||
* @param queryWrapper
|
||||
* MyBatis Plus 查询条件封装对象
|
||||
* @param <Q>
|
||||
@@ -110,7 +91,7 @@ public class QueryHelper {
|
||||
return;
|
||||
}
|
||||
|
||||
// 如果属性值为空,直接返回
|
||||
// 如果字段值为空,直接返回
|
||||
Object fieldValue = field.get(query);
|
||||
if (ObjectUtil.isEmpty(fieldValue)) {
|
||||
return;
|
||||
@@ -131,9 +112,9 @@ public class QueryHelper {
|
||||
* @param queryAnnotation
|
||||
* 查询注解
|
||||
* @param fieldName
|
||||
* 属性名
|
||||
* 字段名
|
||||
* @param fieldValue
|
||||
* 属性值
|
||||
* 字段值
|
||||
* @param queryWrapper
|
||||
* MyBatis Plus 查询条件封装对象
|
||||
* @param <R>
|
||||
|
@@ -47,6 +47,23 @@ public class CheckUtils extends Validator {
|
||||
throwIfNull(obj, message, EXCEPTION_TYPE);
|
||||
}
|
||||
|
||||
/**
|
||||
* 如果为空,抛出异常
|
||||
*
|
||||
* @param obj
|
||||
* 被检测的对象
|
||||
* @param entityName
|
||||
* 实体名
|
||||
* @param fieldName
|
||||
* 字段名
|
||||
* @param fieldValue
|
||||
* 字段值
|
||||
*/
|
||||
public static void throwIfNull(Object obj, String entityName, String fieldName, Object fieldValue) {
|
||||
String message = String.format("%s 为 [%s] 的 %s 记录已不存在", fieldName, fieldValue, entityName);
|
||||
throwIfNull(obj, message, EXCEPTION_TYPE);
|
||||
}
|
||||
|
||||
/**
|
||||
* 如果不为空,抛出异常
|
||||
*
|
||||
@@ -59,6 +76,23 @@ public class CheckUtils extends Validator {
|
||||
throwIfNotNull(obj, message, EXCEPTION_TYPE);
|
||||
}
|
||||
|
||||
/**
|
||||
* 如果不为空,抛出异常
|
||||
*
|
||||
* @param obj
|
||||
* 被检测的对象
|
||||
* @param entityName
|
||||
* 实体名
|
||||
* @param fieldName
|
||||
* 字段名
|
||||
* @param fieldValue
|
||||
* 字段值
|
||||
*/
|
||||
public static void throwIfNotNull(Object obj, String entityName, String fieldName, Object fieldValue) {
|
||||
String message = String.format("%s 为 [%s] 的 %s 记录已存在", fieldName, fieldValue, entityName);
|
||||
throwIfNotNull(obj, message, EXCEPTION_TYPE);
|
||||
}
|
||||
|
||||
/**
|
||||
* 如果为空,抛出异常
|
||||
*
|
||||
|
Reference in New Issue
Block a user