今天 在项目中遇到涉及插入数据为空 且数据会用来计算时 怎么 处理数据 注意如果数据不会用来计算 那直接插入Null值即可,不用处理
第一种:直接将null插入数据库,什么时候调用 什么时候讲null转换为0
坏处:数值经常调用 处理多次 太麻烦,数据list页面显示时候 为null值 不符合实际需要。
第二种:在实体类entity修改 get方法返回值
坏处:在新增页面,输入框中直接显示默认值为0 新增时还要一个一个修改 不符合需求
第三种:在数据插入数据库之前 讲null处理为0
好处:以后调用不用再处理null 避免出现空指针异常 而且在list页面 数据显示为0 符合实际需要
注意:插入数据库时处理空值,修改之前也要考虑 处理修改为null的情况 代码大致一致。
@RequiresPermissions(value={"echarts:memPutInto:add","echarts:memPutInto:edit"},logical=Logical.OR)
@RequestMapping(value = "save")
public String save(MemPutInto memPutInto, Model model, RedirectAttributes redirectAttributes) throws Exception{
if (!beanValidator(model, memPutInto)){
return form(memPutInto, model);
}
if(!memPutInto.getIsNewRecord()){//编辑表单保存
MemPutInto t = memPutIntoService.get(memPutInto.getId());//从数据库取出记录的值
//这两个字段修改后 的结果 如果为 空值 处理为 0
memPutInto.setMemberNum(memPutInto.getMemberNum()!=null&&!memPutInto.getMemberNum().equals("")?memPutInto.getMemberNum():0);
memPutInto.setTogetherMemberNum(memPutInto.getTogetherMemberNum()!=null&&!memPutInto.getTogetherMemberNum().equals("")?memPutInto.getTogetherMemberNum():0);
//其他字段 修改后 如果为 空值 将 不覆盖数据库记录 执行下面 代码
MyBeanUtils.copyBeanNotNull2Bean(memPutInto, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
memPutIntoService.save(t);//保存
}else{//新增表单保存
//可空字段 插入时不填 转换为0
memPutInto.setMemberNum(memPutInto.getMemberNum()!=null&&!memPutInto.getMemberNum().equals("")?memPutInto.getMemberNum():0);
memPutInto.setTogetherMemberNum(memPutInto.getTogetherMemberNum()!=null&&!memPutInto.getTogetherMemberNum().equals("")?memPutInto.getTogetherMemberNum():0);
memPutIntoService.save(memPutInto);//保存
}
addMessage(redirectAttributes, "保存员工投入状况成功");
return "redirect:"+Global.getAdminPath()+"/echarts/memPutInto/?repage";
}