zoukankan      html  css  js  c++  java
  • 自定义注解,进行对象属性设置

    静态工具类:

    /**
         * 注解字段 值重置
         *
         * @param dataList
         * @param <T>
         * @return
         */
        public static <T> List<T> fieldValReset(List<T> dataList) {
            if (CollectionUtils.isEmpty(dataList)) {
                return dataList;
            }
            dataList.forEach(t -> {
                Class clazz = t.getClass();
                List<Field> fields = new ArrayList<>();
                while (clazz != null){
                    fields.addAll(new ArrayList<>(Arrays.asList(clazz.getDeclaredFields())));
                    clazz = clazz.getSuperclass();//获取父类字段
                }
                for (Field field : fields) {
                    LengthLimit lengthLimit = field.getAnnotation(LengthLimit.class);
                    DecimalLimit decimalLimit = field.getAnnotation(DecimalLimit.class);
                    if (lengthLimit == null && decimalLimit == null) {
                        continue;
                    }
                    try {
                        field.setAccessible(true);
                        Object origVal = field.get(t);
                        if (null != origVal) {
                            //length
                            if (null != lengthLimit) {
                                int fieldLength = lengthLimit.length();
                                if (origVal instanceof String) {
                                    String val = origVal.toString();
                                    if (val.length() > fieldLength) {
                                        field.set(t, val.substring(0, fieldLength));
                                    } else {
                                        field.set(t, val);
                                    }
                                }
                            }
                            //decimal
                            if (null != decimalLimit) {
                                int decimal = decimalLimit.decimal();
                                if (origVal instanceof BigDecimal) {
                                    BigDecimal bd = new BigDecimal(origVal.toString());
                                    field.set(t, bd.setScale(decimal, BigDecimal.ROUND_HALF_UP));
                                }
                            }
                        }
                    } catch (IllegalAccessException e) {
                        log.error("反射解析字段属性出错:{}", e);
                    }
    
                }
            });
            return dataList;
        }
    
  • 相关阅读:
    4、numpy——创建数组
    3、NumPy 数组属性
    2、NumPy 数据类型
    windos常见命令操作
    PHP操作MongoDB学习笔记
    MongoDB(八)Mongodb——GridFS存储
    MongoDB(七)MongoDb数据结构
    MongoDB(五)mongo语法和mysql语法对比学习
    MongoDB可视化工具RoboMongo----Windows安装 1
    MongoDB(四)mongodb设置用户访问权限
  • 原文地址:https://www.cnblogs.com/yzm2008/p/11202684.html
Copyright © 2011-2022 走看看