第八周知识点

一、DO:Data Object 值对象

二、DTO: Data Transfer Object
定义:数据传输对象是一种设计模式之间传输数据的软件应用系统。
产生:设计一个分布式应用程序为了满足单个客户端请求,对一个远程接口发出了多个调用,而这些调用所增加的响应时间超出了可接受的程度。


样例图.jpg

样例:如果一次性返回整个实体类,可能造成数据库表结构的泄漏,比如用户名密码一般不需要返回,用DTO解决这个问题
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;

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;

/**
* 根据id查询专家
*
* @param id
* @return
*/
public ExpertDto selectByPrimaryKey(long expertId) {
Expert source = expertMapper.selectByPrimaryKey(expertId);
ExpertDto target = new ExpertDto();
BeanUtils.copyProperties(source, target);
return target;
}
三、VO: View Object
定义:视图对象用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。就是一切给 View 提供数据的对象视图对象可以是基于实体的或基于非实体的。
基于非实体的视图对象是没有任何实体基础的视图对象它的所有属性都是View级属性。
View Object提供了许多API,客户端可以在运行时修改和扩充查询语句。例如,见ViewObject#setWhereClause()。

View级属性(未映射到Entity属性)可能映射到查询语句中的列或SQL表达式。它可能是一个暂时属性(其数据纯粹在内存中,而不是映射到任何数据库列/表达式,或者它可能是一个动态属性。

你可能感兴趣的:(第八周知识点)