业务需求: 由于数据库的创建人,创建时间,更新人和更新时间不能为空,每次进行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));
}
本人也是程序小白一枚,现在在接触了解泛型,尝试封装一些泛型工具类,对程序理解也在慢慢提升,
当有更深的理解会更新这篇文章
本文介绍了如何通过创建一个泛型工具类`SetUserDate`来避免在数据库操作中频繁编写setter/getter方法。在保存业务对象时,该工具类能自动填充创建人、时间和更新信息。示例中展示了如何在`GovernSchoolCase`对象的保存过程中使用此工具类,减少了代码重复并提高了代码复用性。
3650

被折叠的 条评论
为什么被折叠?



