需求:为了兼容更多的学校的需求,现要求高考考生报考专业最多可以选择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);
}
}
}