code2:求优化——共有20个变量,怎么优化写法,简化代码,反射么?

需求:为了兼容更多的学校的需求,现要求高考考生报考专业最多可以选择20个(一般都是8个)。那么我就需要定义20个实体类变量,当然可以用map,不过因为有严格的顺序,为了方便每个专业可以单独修改,我还是建立实体类对应变量比较保险,后期维护也简单明了。我总感觉下面的代码非常啰嗦,包括我优化后的写法,我依旧觉得非常的低端,我要使用反射么,我该怎么优化呢?

private void insertBkzys(XszzbmEntity xszzbmEntity, String bkid) {
    int gkzdzys = 6;//当前学校设置的学生高考报名时最大的志愿数
    Map<String, String> map = new HashMap<String, String>();
    String bkzy1 = xszzbmEntity.getBkzy1();//报考专业代码
    if (bkzy1 != null && !"".equals(bkzy1)) {
        map = new HashMap<String, String>();
        map.put("bkid", bkid);
        map.put("zydm", bkzyTemp);
        map.put("zysx", x+"");
        xszcwhMapper.addXzzy(map);
    }
    String bkzy2 = xszzbmEntity.getBkzy2();
    if (bkzy2 != null && !"".equals(bkzy2) &&gkzdzys>=2) {
        map = new HashMap<String, String>();
        map.put("bkid", bkid);
        map.put("zydm", bkzy2);
        map.put("zysx", "2");
        xszcwhMapper.addXzzy(map);
    }
    String bkzy3 = xszzbmEntity.getBkzy3();
    if (bkzy3 != null && !"".equals(bkzy3) &&gkzdzys>=3) {
        map = new HashMap<String, String>();
        map.put("bkid", bkid);
        map.put("zydm", bkzy3);
        map.put("zysx", "3");
        xszcwhMapper.addXzzy(map);
    }
    String bkzy4 = xszzbmEntity.getBkzy4();
    if (bkzy4 != null && !"".equals(bkzy4) &&gkzdzys>=4) {
        map = new HashMap<String, String>();
        map.put("bkid", bkid);
        map.put("zydm", bkzy4);
        map.put("zysx", "4");
        xszcwhMapper.addXzzy(map);
    }
    String bkzy5 = xszzbmEntity.getBkzy5();
    if (bkzy5 != null && !"".equals(bkzy5) &&gkzdzys>=5) {
        map = new HashMap<String, String>();
        map.put("bkid", bkid);
        map.put("zydm", bkzy5);
        map.put("zysx", "5");
        xszcwhMapper.addXzzy(map);
    }
    String bkzy6 = xszzbmEntity.getBkzy6();
    if (bkzy6 != null && !"".equals(bkzy6) &&gkzdzys>=6) {
        map = new HashMap<String, String>();
        map.put("bkid", bkid);
        map.put("zydm", bkzy6);
        map.put("zysx", "6");
        xszcwhMapper.addXzzy(map);
    }
    String bkzy7 = xszzbmEntity.getBkzy7();
    if (bkzy7 != null && !"".equals(bkzy7) &&gkzdzys>=7) {
        map = new HashMap<String, String>();
        map.put("bkid", bkid);
        map.put("zydm", bkzy7);
        map.put("zysx", "7");
        xszcwhMapper.addXzzy(map);
    }
    String bkzy8 = xszzbmEntity.getBkzy8();
    if (bkzy8 != null && !"".equals(bkzy8) &&gkzdzys>=8) {
        map = new HashMap<String, String>();
        map.put("bkid", bkid);
        map.put("zydm", bkzy8);
        map.put("zysx", "8");
        xszcwhMapper.addXzzy(map);
    }
    //...后面还有12个没有写,实际应该写20个
}

我的初步优化在下面,您先想一下您的想法再看我的,我的也非常低端,暂时没时间考虑了。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

private void insertBkzy(XszzbmEntity xszzbmEntity, String bkid) {
    int gkzdzys = 6;//最大志愿数
    
    xszcwhMapper.delXXXByBkid(bkid);

    String bkzy1 = xszzbmEntity.getBkzy1();//报考专业代码
    String bkzy2 = xszzbmEntity.getBkzy2();
    String bkzy3 = xszzbmEntity.getBkzy3();
    String bkzy4 = xszzbmEntity.getBkzy4();
    String bkzy5 = xszzbmEntity.getBkzy5();
    String bkzy6 = xszzbmEntity.getBkzy6();
    String bkzy7 = xszzbmEntity.getBkzy7();
    String bkzy8 = xszzbmEntity.getBkzy8();
    Map<String, String> map = new HashMap<String, String>();
    String bkzyTemp = null;
    for(int x=1;x<=gkzdzys;x++){
        if(x == 1){ bkzyTemp = bkzy1;
        }else if(x == 2){ bkzyTemp = bkzy2;
        }else if(x == 3){ bkzyTemp = bkzy3;
        }else if(x == 4){ bkzyTemp = bkzy4;
        }else if(x == 5){ bkzyTemp = bkzy5;
        }else if(x == 6){ bkzyTemp = bkzy6;
        }else if(x == 7){ bkzyTemp = bkzy7;
        }else if(x == 8){ bkzyTemp = bkzy8;}
        if (bkzyTemp != null && !"".equals(bkzyTemp)) {
            map = new HashMap<String, String>();
            map.put("bkid", bkid);
            map.put("zydm", bkzyTemp);
            map.put("zysx", x+"");
            xszcwhMapper.addXzzy(map);
        }
    }
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值