相册和图片的关系:
相册和图片的关系,一个相册可以有多张图片,而一个图片只能属于一个相册,这样关系就出来了,相册对于图片是一对多的关系,我们怎么去描述这种关系呢。其实也很简单,只需要在多的一方去引入另一个的主键即可,我们在image表中最后一列,引入album(相册)表的主键album_id。
Image的实体类。
@Entity
public class Image {
@Id//主键
@GeneratedValue(strategy = GenerationType.IDENTITY)//自增
private Long id;
private String image;
@ManyToOne(targetEntity = Album.class)//多对一的关系
@JoinColumn(name = "album_id")//外键名称
private Album album;
protected Image(){}
@Override
public String toString() {
return "Image{" +
"id=" + id +
", image='" + image + '\'' +
", album=" + album +
'}';
}
public Image(String image, Album album) {
this.image = image;
this.album = album;
}
public Album getAlbum() {
return album;
}
public void setAlbum(Album album) {
this.album = album;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
}
@Entity
public class Album {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
private String content;
private String cover;
private String createTime;
private Long imageNumber;
@OneToMany(targetEntity = Image.class)
@JoinColumn(name = "album_id")
private Set<Image> images=new HashSet<>();
protected Album(){}
@Override
public String toString() {
return "Album{" +
"id=" + id +
", title='" + title + '\'' +
", content='" + content + '\'' +
", cover='" + cover + '\'' +
", createTime='" + createTime + '\'' +
", imageNumber=" + imageNumber +
", images=" + images +
'}';
}
public Album(String title, String content, String cover, String createTime, Long imageNumber, Set<Image> images) {
this.title = title;
this.content = content;
this.cover = cover;
this.createTime = createTime;
this.imageNumber = imageNumber;
this.images = images;
}
public Set<Image> getImages() {
return images;
}
public void setImages(Set<Image> images) {
this.images = images;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getCover() {
return cover;
}
public void setCover(String cover) {
this.cover = cover;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public Long getImageNumber() {
return imageNumber;
}
public void setImageNumber(Long imageNumber) {
this.imageNumber = imageNumber;
}
}
通过jpa很方便的帮我们在数据库中生成相应的表和对应的关系。
上传图片
点击进去可以查看所有图片:
相册模块总结:
这只是整个博客项目的一个小模块功能的实现。后续将会使用SpringSecurity来实现第三方登陆的一下功能,然后部署上线。过段时间再更新。