BeanUtil.copyProperties的使用要求的需要拷贝目的类的属性名以及别名都需要和源类一样才能成功。
比如user.class 拷贝到userDto.class
package com.zhuoaninfo.vueDemo.entity;
import cn.hutool.core.annotation.Alias;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.sql.Timestamp;
@Data
@TableName("sys_user")
public class User {
@TableId(type= IdType.AUTO)
private Integer id;
@Alias("用户名")
@TableField("name")
private String username;
@JsonIgnore
@Alias("密码")
private String password;
@Alias("真实姓名")
private String realName;
@Alias("地址")
private String address;
private Timestamp create_time;
private String awata;
}
package com.zhuoaninfo.vueDemo.dto;
import cn.hutool.core.annotation.Alias;
import lombok.Data;
@Data
public class UserDto {
@Alias("用户名")
String username;
@Alias("密码")
String password;
private String awata;
}
使用
@Override
public User register(UserDto vo) {
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("name",vo.getUsername());
wrapper.eq("password",vo.getPassword());
User one = getOne(wrapper);
if(one == null){
one= new User();
BeanUtil.copyProperties(vo,one,true);
save(one);
}else {
throw new ServiceException(Contants.Code_401,"用户已存在");
}
return one;
}
才会成功。
如果userDto中的类不加别名,则无法完成属性拷贝,进而导致save存值异常。