如果一次性返回整个实体类,可能造成数据库表结构的泄漏,比如用户名密码一般不需要返回,用DTO解决这个问题
有一个Model:Expert.java
public class Expert {
/**
* 专家编号
*/
@Id
@Column(name = "expert_id")
@ApiModelProperty("专家编号")
@GeneratedValue(generator = "JDBC")
private Long expertId;
/**
* 登录名
*/
@ApiModelProperty(value = "登陆名,最大长度50", required = true)
@NotBlank(message = "用户名不能为空!")
@Length(min = 1, max = 50)
@Transient
private String loginName;
/**
* 密码
*/
@ApiModelProperty(value = "登陆密码", required = true)
@NotBlank(message = "密码不能为空!")
@Length(min = 1, max = 500)
@Transient
private String password;
/**
* 民族
*/
@ApiModelProperty(value = "民族", required = true)
@Length(min = 1, max = 10)
private String nation;
现在要求根据专家id查询专家信息,返回不带用户名和密码
创建一个DTO
public class ExpertDto {
/**
* 专家编号
*/
@Id
@Column(name = "expert_id")
@ApiModelProperty("专家编号")
@GeneratedValue(generator = "JDBC")
private Long expertId;
/**
* 民族
*/
@ApiModelProperty(value = "民族", required = true)
@Length(min = 1, max = 30)
private String nation;
用BeanUtils.copyProperties(source, target)方法, 根据专家id查询专家信息,返回不带用户名和密码
/**
* 根据id查询专家
*
* @param id
* @return
*/
public ExpertDto selectByPrimaryKey(long expertId) {
Expert source = expertMapper.selectByPrimaryKey(expertId);
ExpertDto target = new ExpertDto();
BeanUtils.copyProperties(source, target);
return target;
}