反射的一些用法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33212500/article/details/82152563
 /**
     * 根据属性名获取属性值
     * @param fieldName
     * @param object
     * @param <T>
     * @return
     */
    public static <T> T  getFieldValueByFieldName(String fieldName, Object object) {
        try {
            Field field = object.getClass().getDeclaredField(fieldName);
            //设置对象的访问权限,保证对private的属性的访问
            field.setAccessible(true);
            return  (T)field.get(object);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * sql语句中where都是=这种判断时,如id=#{bean.id} and createTime=#{bean.createTime},
     * 此时ES按这种条件查询,就可以使用该方法
     *
     * @param model
     * @param map
     */
    public static void setKeyValue(Object model, Map<String, String> map) {
        try{
            String get = "get";
            // 获取实体类的所有属性,返回Field数组
            Field[] field = FieldUtils.getAllFields(model.getClass());
            // 遍历所有属性
            for (Field aField : field) {
                // 获取属性的名字
                String key = aField.getName();
                // 将属性的首字符大写,方便构造get,set方法
                String name = key.substring(0, 1).toUpperCase() + key.substring(1);
                // 获取属性的类型
                String type = aField.getGenericType().toString();
                // 如果type是类类型,则前面包含"class ",后面跟类名
                if (StringUtils.equals(type, String.class.toString())) {
                    Method m = model.getClass().getMethod(get + name);
                    // 调用getter方法获取属性值
                    String value = (String) m.invoke(model);
                    if (StringUtils.isNotBlank(value)){
                        map.put(key, value);
                    }
                }
                if (StringUtils.equals(type, Integer.class.toString())) {
                    Method m = model.getClass().getMethod(get + name);
                    Integer value = (Integer) m.invoke(model);
                    if (null != value){
                        map.put(key, String.valueOf(value));
                    }
                }
                if (StringUtils.equals(type, Long.class.toString())) {
                    Method m = model.getClass().getMethod(get + name);
                    Long value = (Long) m.invoke(model);
                    if (null != value){
                        map.put(key, String.valueOf(value));
                    }
                }
                if (StringUtils.equals(type, Short.class.toString())) {
                    Method m = model.getClass().getMethod(get + name);
                    Short value = (Short) m.invoke(model);
                    if (null != value){
                        map.put(key, String.valueOf(value));
                    }
                }
                if (StringUtils.equals(type, Double.class.toString())) {
                    Method m = model.getClass().getMethod(get + name);
                    Double value = (Double) m.invoke(model);
                    if (null != value){
                        map.put(key, String.valueOf(value));
                    }
                }
                if (StringUtils.equals(type, Boolean.class.toString())) {
                    Method m = model.getClass().getMethod(get + name);
                    Boolean value = (Boolean) m.invoke(model);
                    if (null != value){
                        map.put(key, String.valueOf(value));
                    }
                }
                if (StringUtils.equals(type, Date.class.toString())) {
                    Method m = model.getClass().getMethod(get + name);
                    Date value = (Date) m.invoke(model);
                    if (null != value){
                        map.put(key, DateUtils.formatDate(value, DateUtils.yyyy_MM_dd_HH_mm_ss_SSS));
                    }
                }
                if (StringUtils.equals(type, BigDecimal.class.toString())) {
                    Method m = model.getClass().getMethod(get + name);
                    BigDecimal value = (BigDecimal) m.invoke(model);
                    if (null != value){
                        map.put(key, String.valueOf(value));
                    }
                }
            }
        } catch (Throwable t){
            throw new RuntimeException(t);
        }
    }

猜你喜欢

转载自blog.csdn.net/qq_33212500/article/details/82152563