From 9963d93d617e1f1fbfc2901565634f03453e50bf Mon Sep 17 00:00:00 2001 From: zy <82248909@qq.com> Date: Sat, 6 Dec 2025 16:44:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B0=B4=E6=A0=B7=E7=94=9F?= =?UTF-8?q?=E6=88=90=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SurvHisdataLivestockwaterServiceImpl.java | 33 +++-- .../SurvHisdataOrientwaterServiceImpl.java | 15 ++- src/main/java/com/lanhai/util/TUtil.java | 116 ++++++++++++++++++ 3 files changed, 147 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/lanhai/service/Impl/SurvHisdataLivestockwaterServiceImpl.java b/src/main/java/com/lanhai/service/Impl/SurvHisdataLivestockwaterServiceImpl.java index e32ae2f..0ab0a77 100644 --- a/src/main/java/com/lanhai/service/Impl/SurvHisdataLivestockwaterServiceImpl.java +++ b/src/main/java/com/lanhai/service/Impl/SurvHisdataLivestockwaterServiceImpl.java @@ -301,19 +301,26 @@ public class SurvHisdataLivestockwaterServiceImpl extends ServiceImpl clazz, String fieldName) { + if (clazz == null || fieldName == null || fieldName.trim().isEmpty()) { + return false; + } + + try { + // 获取本类及其所有父类的字段 + Class currentClass = clazz; + while (currentClass != null && currentClass != Object.class) { + Field field = currentClass.getDeclaredField(fieldName); + if (field != null) { + return true; + } + currentClass = currentClass.getSuperclass(); + } + } catch (NoSuchFieldException e) { + // 字段不存在,继续查找父类 + return hasFieldInSuperClass(clazz.getSuperclass(), fieldName); + } + + return false; + } + + private static boolean hasFieldInSuperClass(Class clazz, String fieldName) { + if (clazz == null || clazz == Object.class) { + return false; + } + + try { + Field field = clazz.getDeclaredField(fieldName); + return field != null; + } catch (NoSuchFieldException e) { + return hasFieldInSuperClass(clazz.getSuperclass(), fieldName); + } + } + + /** + * 判断实体类中是否存在指定字段(不区分大小写) + * @param clazz 实体类Class对象 + * @param fieldName 字段名 + * @return 是否存在该字段 + */ + public static boolean hasFieldIgnoreCase(Class clazz, String fieldName) { + if (clazz == null || fieldName == null || fieldName.trim().isEmpty()) { + return false; + } + + Field[] fields = getAllFields(clazz); + for (Field field : fields) { + if (field.getName().equalsIgnoreCase(fieldName)) { + return true; + } + } + + return false; + } + + /** + * 获取实体类所有字段(包括父类) + * @param clazz 实体类Class对象 + * @return 字段数组 + */ + public static Field[] getAllFields(Class clazz) { + List fieldList = new ArrayList<>(); + Class currentClass = clazz; + + while (currentClass != null && currentClass != Object.class) { + Field[] fields = currentClass.getDeclaredFields(); + for (Field field : fields) { + // 跳过静态字段 + if (!Modifier.isStatic(field.getModifiers())) { + fieldList.add(field); + } + } + currentClass = currentClass.getSuperclass(); + } + + return fieldList.toArray(new Field[0]); + } + + /** + * 获取字段类型 + * @param clazz 实体类Class对象 + * @param fieldName 字段名 + * @return 字段类型,不存在返回null + */ + public static Class getFieldType(Class clazz, String fieldName) { + if (!hasField(clazz, fieldName)) { + return null; + } + + try { + Class currentClass = clazz; + while (currentClass != null && currentClass != Object.class) { + try { + Field field = currentClass.getDeclaredField(fieldName); + return field.getType(); + } catch (NoSuchFieldException e) { + currentClass = currentClass.getSuperclass(); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + + return null; + } + }