代码走查

新生入学系统问题剖析
   @Override
    public boolean addFreshStudentNew(FreshStudentAndStudentModel freshStudentAndStudentModel) throws ParseException {
        if (freshStudentAndStudentModel == null) {
            return false;
        }
        StudentEntity studentEntity = new StudentEntity();
        EnrollStudentEntity enrollStudentEntity = new EnrollStudentEntity();
        //新生实体
        if (freshStudentAndStudentModel.getNemtCode() != null && freshStudentAndStudentModel.getNemtCode() != "") {
            enrollStudentEntity.setNemtCode(freshStudentAndStudentModel.getNemtCode());//考生号
        }
        if (freshStudentAndStudentModel.getName() != null && freshStudentAndStudentModel.getName() != "") {
            enrollStudentEntity.setName(freshStudentAndStudentModel.getName());//姓名
        }
        if (freshStudentAndStudentModel.getIdCard() != null && freshStudentAndStudentModel.getIdCard() != "") {
            enrollStudentEntity.setIdentityCardId(freshStudentAndStudentModel.getIdCard());//身份证号
        }
        if (freshStudentAndStudentModel.getNation() != null && freshStudentAndStudentModel.getNation() != "") {
            enrollStudentEntity.setNation(freshStudentAndStudentModel.getNation());//民族
        }
        if (freshStudentAndStudentModel.getNemtScore() != null && freshStudentAndStudentModel.getNemtScore() != "") {
            enrollStudentEntity.setNemtScore(freshStudentAndStudentModel.getNemtScore()); //成绩(高考分数)
        }
        if (freshStudentAndStudentModel.getSex() != null && freshStudentAndStudentModel.getSex() != "") {
            enrollStudentEntity.setSex(freshStudentAndStudentModel.getSex()); //性别
        }

        if (StringUtils.isBlank(enrollStudentEntity.getId())) {
            enrollStudentEntity.setId(UuidUtils.base58Uuid());  //新生Id
        }
        if (StringUtils.isBlank(enrollStudentEntity.getStudentId())) {
            enrollStudentEntity.setStudentId(UuidUtils.base58Uuid()); //学生ID
        }

        //学生实体
        if (freshStudentAndStudentModel.getEntranceDate() != null && freshStudentAndStudentModel.getEntranceDate() != "") {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            //freshStudentAndStudentModel.getEntranceDate()
            studentEntity.setEntranceDate(sdf.parse(freshStudentAndStudentModel.getEntranceDate()));
        }
        if (freshStudentAndStudentModel.getProfessionId() != null && freshStudentAndStudentModel.getProfessionId() != "") {
            studentEntity.setProfessionId(freshStudentAndStudentModel.getProfessionId());
        }
        if (StringUtils.isBlank(enrollStudentEntity.getStudentId())) {
            studentEntity.setId(enrollStudentEntity.getStudentId());//学生ID
        }
        int i1 = this.insert(studentEntity);
        enrollStudentEntity.setStudentId(studentEntity.getId());
        int i = enrollStudentDao.insert(enrollStudentEntity);
        //TODO 调用权限接口,添加新生角色,需要用到分布式事务
        if (enrollStudentEntity.getId()!=null &&!enrollStudentEntity.getId().isEmpty()){
            userEntity.setId(enrollStudentEntity.getId());//新生Id
        }
        if (enrollStudentEntity.getNemtCode()!=null && !enrollStudentEntity.getNemtCode().isEmpty())
        {
            userEntity.setUserCode(enrollStudentEntity.getNemtCode());//考生号
        }
        if (enrollStudentEntity.getName()!=null&&!enrollStudentEntity.getName().isEmpty()){
            userEntity.setUserRealName(enrollStudentEntity.getName());
        }
        if (enrollStudentEntity.getTelNum()!=null&&!enrollStudentEntity.getTelNum().isEmpty()){
            userEntity.setTelNum(enrollStudentEntity.getTelNum());
        }
        userRoleModel.setUserEntity(userEntity);
        List<UserRoleModel> userRoleModels=new ArrayList<>();
        userRoleModels.add(userRoleModel);

        if (i > 0 && i1 > 0) {
            return true;
        }
        return false;
    }
存在问题:
1、if语句的判断是否存在必要性。
if (freshStudentAndStudentModel.getNemtCode() != null && freshStudentAndStudentModel.getNemtCode() != "") {
    enrollStudentEntity.setNemtCode(freshStudentAndStudentModel.getNemtCode());//考生号
}
nEMT_code字段,默认为NULL。如果freshStudentAndStudentModel.getNemtCode() 为null,不走{}里面的代码。enrollStudentEntity.
setNemtCode为null。如果不判null,走{}里面的代码,enrollStudentEntity.setNemtCode仍为null。所以判null判空的意义不大。
(当时的本意是想做一些数据合法性的校验。还是经验欠缺啊。如果数据不合法,直接返回,不让程序继续执行。)
2、判空写法错误,详见==和equals的区别。
3、没有加事务注解
   是对三个表进行插入操作。没有写事务的注解,应该加上注解:@Transactional(rollbackFor = Exception.class)
4、实体引用方式错误
   
(当时想法是图省事,懒得写new。使用的是@Autowired。但发布到服务器上之后注册不到dubbo上,于是把注解@Autowired改成@Reference,
注册成功)实体类不直接用成员变量的。一般都是放在方法中去new。只有在引用其他模块服务的Facade才使用@Reference。
5、SimpleDateFormat类是方法内实例化
   创建SimpleDateFormat是非常消耗内存的。并且是线程不安全的。每次一次添加方法创建一个SimpleDateFormat实例显然是不合理的。
因此需要在方法外对SimpleDateFormat类进行实例化。也就是作为成员变量。或者说在jvm加载该类时对
SimpleDateFormat进行初始化(实例化)。
6、方法注释没有写

7、方法内部必要的注释。
   每次对数据库进行操作,都需要写注释,标明这是干嘛的。
 
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值