业务需求: 由于数据库的创建人,创建时间,更新人和更新时间不能为空,每次进行save操作 都会写一大堆 setter/getter 方法! public class SetUserDate<T> { /** * // 定义泛型成员变量 */ private T ob; public SetUserDate(T ob) { this.ob = ob; } public T getOb() { return ob; } public void setOb(T ob) { this.ob = ob; } public Object updateAndSaveInfo(HttpServletRequest request,Boolean save) { Class<?> aClass = ob.getClass(); DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); JSONObject toJSON = (JSONObject)JSON.toJSON(ob); BladeUser user = AuthUtil.getUser(request); LocalDateTime now = LocalDateTime.now(); String nowFormat = now.format(dateTimeFormatter); if(save){ toJSON.put("createDept",user.getDeptId()); toJSON.put("createTime",nowFormat); toJSON.put("createUser",user.getUserId()); toJSON.put("updateTime",nowFormat); toJSON.put("updateUser",user.getUserId()); }else { toJSON.put("updateTime",nowFormat); toJSON.put("updateUser",user.getUserId()); } Object o = toJSON.toJavaObject(aClass); return o; } }
/** * 调用泛型的逻辑代码 */ @PostMapping("/save") @ApiOperationSupport(order = 4) @ApiOperation(value = "新增", notes = "传入governSchoolCase") public R save(@Valid @RequestBody GovernSchoolCase governSchoolCase,HttpServletRequest request) { SetUserDate<GovernSchoolCase> setUserDate =new SetUserDate<>(governSchoolCase); GovernSchoolCase governSchoolCaseSetUserDate = (GovernSchoolCase)setUserDate.updateAndSaveInfo(request,true); return R.status(governSchoolCaseService.save(governSchoolCaseSetUserDate)); }
本人也是程序小白一枚,现在在接触了解泛型,尝试封装一些泛型工具类,对程序理解也在慢慢提升,
当有更深的理解会更新这篇文章