@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、方法内部必要的注释。
每次对数据库进行操作,都需要写注释,标明这是干嘛的。