生成请求参数文档及测试数据生成


import com.alibaba.fastjson.JSON;
import com.topevery.sums.exchange.business.share.vo.*;
import io.swagger.annotations.ApiModelProperty;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

/**
 * @Author 
 * @Date 2021/12/24 13:39
 * @Version 1.0
 * @Descrption
 */
public class shengchengwendang {

    public static void main(String[] args) throws Exception {
        doc(new PBQ10001VO());
//        method(VO);
    }


	// 生成请求参数文档
    public static void doc(Object ob) {
        Class aClass = ob.getClass();
        Field[] declaredFields = aClass.getDeclaredFields();
        for (Field f :
                declaredFields) {
            String value = " ";
            if (f.isAnnotationPresent(ApiModelProperty.class)) {
                ApiModelProperty annotation = f.getAnnotation(ApiModelProperty.class);
                value = annotation.value();
            }
                String name = f.getName();

                String type = f.getGenericType().toString();
                int i = type.lastIndexOf(".");
                String substring = type.substring(i + 1);

                System.out.println(name + "\t" + value +  "\t" + substring);


        }
    }


    /**
     * 通过反射获取字段较多的JavaBean数据填充类继而进行测试
     * @param model 传入JavaBean的实体
     * @return
     * @throws IllegalAccessException
     * @throws NoSuchMethodException
     * @throws InvocationTargetException
     */
    public static Object method(Object model) throws IllegalAccessException, NoSuchMethodException, InvocationTargetException {

        Class aClass = model.getClass();
        List<Field> classs = new ArrayList();
//        Field[] declaredFields = aClass.getDeclaredFields();
        while (aClass != null) {
            classs.addAll(Arrays.asList(aClass.getDeclaredFields()));
            aClass = aClass.getSuperclass();
        }

        for (int i = 1; i < classs.size(); i++) {
            Field f = classs.get(i);
            String name = f.getName();
            name = name.substring(0, 1).toUpperCase() + name.substring(1); // 将属性的首字符大写,方便构造get,set方法
            String type = f.getGenericType().toString(); //
            String typeName = f.getGenericType().getTypeName();
//            System.out.println(typeName);

            if (type.equals("class java.lang.String")) { // 如果type是类类型,则前面包含"class ",后面跟类名
                Method m = model.getClass().getMethod("get" + name);
                String value = (String) m.invoke(model); // 调用getter方法获取属性值
                if (value == null) {
                    m = model.getClass().getMethod("set" + name, String.class);
                    m.invoke(model, name);
                }
            }

            if (type.equals("class java.lang.Integer")) {
                Method m = model.getClass().getMethod("get" + name);
                Integer value = (Integer) m.invoke(model);
                if (value == null) {
                    m = model.getClass().getMethod("set" + name, Integer.class);
                    m.invoke(model, 24657553);
                }
            }
            if (type.equals("class java.util.Date")) {
                Method m = model.getClass().getMethod("get" + name);
                Date value = (Date) m.invoke(model);
                if (value == null) {
                    m = model.getClass().getMethod("set" + name, Date.class);
                    m.invoke(model, new Date());
                }
            }
            if (type.equals("class java.lang.Double")) {
                Method m = model.getClass().getMethod("get" + name);
                Double value = (Double) m.invoke(model);
                if (value == null) {
                    m = model.getClass().getMethod("set" + name, Double.class);
                    m.invoke(model, 100.12);
                }
            }

            if (type.equals("class java.lang.Long")) {
                Method m = model.getClass().getMethod("get" + name);
                Long value = (Long) m.invoke(model);
                if (value == null) {
                    m = model.getClass().getMethod("set" + name, Long.class);
                    m.invoke(model, 600L);
                }
            }


            if (type.equals("class java.math.BigDecimal")) {
                Method m = model.getClass().getMethod("get" + name);
                BigDecimal value = (BigDecimal) m.invoke(model);
                if (value == null) {
                    m = model.getClass().getMethod("set" + name, BigDecimal.class);
                    m.invoke(model, new BigDecimal("3.14"));
                }
            }


        }


        System.out.println(JSON.toJSONString(model));

        return model;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值