在歌曲类Song和歌单类SongList之间,增加一个ListSong类,作为中间表,关联歌曲和歌单
@TableName(value = "list_song")
@Data
public class ListSong implements Serializable {
@TableId(type = IdType.AUTO)
private Integer id;
private Integer songId;
private Integer songListId;
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
}
在接收请求时新增一个请求处理类ListSongRequest
@Data
public class ListSongRequest {
private Integer id;
private Integer songId;
private Integer songListId;
}
专门用于处理前端到后端的数据传输,而不直接使用实体类
这是一种常见的后端开发设计模式,将Domain实体类和Request请求类分开的原因是:
1. ListSong是数据库实体类(Domain),直接映射数据库表结构,包含了@TableName等数据库相关注解
2. ListSongRequest是接口请求对象(DTO),用于接收前端传来的数据,可以根据接口需求灵活定义字段
3. 这种分离可以避免实体类被污染,增强安全性,比如可以在Request类中过滤敏感字段
4. 便于接口版本管理和扩展,当接口参数变化时,只需修改Request类,不影响数据库实体类
5. 符合单一职责原则,实体类负责数据库映射,Request类负责接口参数传输