| package com.ruoyi.common.core.utils.bean; | 
|   | 
| import java.lang.reflect.Method; | 
| import java.util.ArrayList; | 
| import java.util.List; | 
| import java.util.regex.Matcher; | 
| import java.util.regex.Pattern; | 
|   | 
| /** | 
|  * Bean 工具类 | 
|  *  | 
|  * @author ruoyi | 
|  */ | 
| public class BeanUtils extends org.springframework.beans.BeanUtils | 
| { | 
|     /** Bean方法名中属性名开始的下标 */ | 
|     private static final int BEAN_METHOD_PROP_INDEX = 3; | 
|   | 
|     /** * 匹配getter方法的正则表达式 */ | 
|     private static final Pattern GET_PATTERN = Pattern.compile("get(\\p{javaUpperCase}\\w*)"); | 
|   | 
|     /** * 匹配setter方法的正则表达式 */ | 
|     private static final Pattern SET_PATTERN = Pattern.compile("set(\\p{javaUpperCase}\\w*)"); | 
|   | 
|     /** | 
|      * Bean属性复制工具方法。 | 
|      *  | 
|      * @param dest 目标对象 | 
|      * @param src 源对象 | 
|      */ | 
|     public static void copyBeanProp(Object dest, Object src) | 
|     { | 
|         try | 
|         { | 
|             copyProperties(src, dest); | 
|         } | 
|         catch (Exception e) | 
|         { | 
|             e.printStackTrace(); | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * 获取对象的setter方法。 | 
|      *  | 
|      * @param obj 对象 | 
|      * @return 对象的setter方法列表 | 
|      */ | 
|     public static List<Method> getSetterMethods(Object obj) | 
|     { | 
|         // setter方法列表 | 
|         List<Method> setterMethods = new ArrayList<Method>(); | 
|   | 
|         // 获取所有方法 | 
|         Method[] methods = obj.getClass().getMethods(); | 
|   | 
|         // 查找setter方法 | 
|   | 
|         for (Method method : methods) | 
|         { | 
|             Matcher m = SET_PATTERN.matcher(method.getName()); | 
|             if (m.matches() && (method.getParameterTypes().length == 1)) | 
|             { | 
|                 setterMethods.add(method); | 
|             } | 
|         } | 
|         // 返回setter方法列表 | 
|         return setterMethods; | 
|     } | 
|   | 
|     /** | 
|      * 获取对象的getter方法。 | 
|      *  | 
|      * @param obj 对象 | 
|      * @return 对象的getter方法列表 | 
|      */ | 
|   | 
|     public static List<Method> getGetterMethods(Object obj) | 
|     { | 
|         // getter方法列表 | 
|         List<Method> getterMethods = new ArrayList<Method>(); | 
|         // 获取所有方法 | 
|         Method[] methods = obj.getClass().getMethods(); | 
|         // 查找getter方法 | 
|         for (Method method : methods) | 
|         { | 
|             Matcher m = GET_PATTERN.matcher(method.getName()); | 
|             if (m.matches() && (method.getParameterTypes().length == 0)) | 
|             { | 
|                 getterMethods.add(method); | 
|             } | 
|         } | 
|         // 返回getter方法列表 | 
|         return getterMethods; | 
|     } | 
|   | 
|     /** | 
|      * 检查Bean方法名中的属性名是否相等。<br> | 
|      * 如getName()和setName()属性名一样,getName()和setAge()属性名不一样。 | 
|      *  | 
|      * @param m1 方法名1 | 
|      * @param m2 方法名2 | 
|      * @return 属性名一样返回true,否则返回false | 
|      */ | 
|   | 
|     public static boolean isMethodPropEquals(String m1, String m2) | 
|     { | 
|         return m1.substring(BEAN_METHOD_PROP_INDEX).equals(m2.substring(BEAN_METHOD_PROP_INDEX)); | 
|     } | 
| } |