当需要修改一条数据的时候(比如修改一条员工信息),有以下几个流程
/*
* user是传进来需要修改的实体类:我写的是多表修改所以User是新创建的一个实体类
*(多表修改的时候,需要重新创建一个实体类来放前台传过来的所有参数,要与当前userDomain的名字一一对应,这样通过mp会自动修改值
*/
public String updateUser(User user){
//通过Id来获取到员工的信息
UserDomain userDomain = iUserService.getById(user.id);
//通过Objects.isNull的方法来判断userDomain是否为空,如果是空值那说明没有查到该员工,不能修改
if(Objects.isNull(userDomain))
return "没有找到对应的员工信息,修改失败";
//BeanUtils.copyProperties()第一个值为 源,第二个值为 目标
BeanUtils.copyProperties(user,userDomain);
//调用mp自动生成的修改方法进行修改
iUserservice.update(userDomain);
return "修改成功";
}
如果获取到的还有公司的信息,就同理再写一份就完成了(记得user表中的属性名一一对应,这样才可以赋值)
>>>>>>扩展>>>>>>
- Objects.isNull
java.util的Objects.isNull和 object == null 从源码上看是没什么区别的,如果非要一探究竟请自行咨询度娘
public static boolean isNull(Object obj) {
return obj == null;
}
- BeanUtils.copyProperties
使用原因:当我们有两个具有很多相同属性的JavaBean,我们可能就会对属性逐个赋值,会出现满屏的set。如果属性再多一点可能会把手指累断,这肯定不行的。
使用方法:BeanUtils.copyProperties("源", "目标");
一行就搞定了。
但是值得提的几个点:(以下用A、B来表示源类、目标类)
1)b中的存在的属性,a中一定要有,但是a中可以有多余的属性;
2)a中与b中相同的属性都会被替换,不管是否有值;
3)a、 b中的属性要名字相同,才能被赋值,不然的话需要手动set赋值;
4)BeanUtils的CopyProperties方法需要对应的属性有getter和setter方法;
5)如果存在属性完全相同的内部类,但是不是同一个内部类,即分别属于各自的内部类,则spring会认为属性不同,不会copy;
6)spring和apache的copy属性的方法源和目的参数的位置正好相反,所以导包和调用的时候都要注意一下。
END
作为一个小菜鸡,这个博客就是写一些最最低级的东西, 扩展都是网上搜的摘抄的,如果有侵权请告知删除。如果你觉得写的很辣鸡,请不要怀疑,那是真的很辣鸡。