问题:修改更新数据库部分字段,用save()方法进行update操作,未修改字段默认为null。
User表有username,id,phone,email,password字段,只修改usernam和phone,
修改操作:
1.拿到前端传递的实体user;
2.根据user的userId,拿到原始的对象(修改前的user对象);
Long userId = user.getUserId(); //获取userId
User oldUser = userDao.findByUserId(userId); //根据userId得到修改前原user对象
3.将前端传递过来的不为空的参数,也就是要修改的值copy复制来覆盖原始对象
UpdateUtil.copyNullProperties(user,oldUser);
解决方法:写一个工具类,筛选出前端传递过来要修改的实体user中为null的字段,然后将不为空的参数(也就是要修改的参数覆盖原来数据库中修改前的参数)(也就是要修改的进行修改,不修改的保持不变)。
1.工具类:UpdateUtil.java
/**
* 更新工具类(忽略为null的字段)
*/
public class UpdateUtil {
/**
* 所有为空值的属性都不copy
* @param source
* @param target
*/
public static void copyNullProperties(Object source, Object target) {
BeanUtils.copyProperties(source,