我在Spring Web应用程序中有两个类Video和Photo,分别使用jpa,mysql,amazon s3。我想要的是能够在我的视图中返回一个媒体列表,该列表将视频和照片作为一个实体同时存在。有没有办法做到这一点。我需要一个主意。
想法
如果我创建一个Media类并制作照片和视频对该类进行扩展,那么对您有帮助吗?有没有办法说getMediaList及其返回的视频和按创建日期排序的实体?
答案 0 :(得分:1)
如果我正确理解了您的问题,则实际上您可以创建一个抽象的Media
类,并使Video
和Photo
类都从该类扩展。
要在List<Media>
中对所有元素进行排序,可以实现 sort
方法,该方法在日期字段上使用比较器。
例如,这些类可以组织如下:
public abstract class Media {
protected Date createdOn;
protected String name;
protected Date getCreationDate() {
return createdOn;
}
public String getName() {
return name;
}
public static void sort(List<Media> movieItems) {
movieItems.sort(Comparator.comparing(Media::getCreationDate));
}
}
public class Video extends Media {
private String someAttribute;
public Video(Date date, String name) {
createdOn = date;
this.name = name;
}
}
public class Photo extends Media {
private String someOtherAttribute;
public Photo(Date date, String name) {
createdOn = date;
this.name = name;
}
}
以下代码
public class Main {
public static void main(String[] args) {
// Create first element
Date date1 = new Date(System.currentTimeMillis());
Video video1 = new Video(date1, "Timelapse");
// Create second element
Date date2 = new Date(System.currentTimeMillis() - 1000);
Photo photo1 = new Photo(date2, "My pretty picture");
// Create list
ArrayList<Media> myMedia = new ArrayList<>();
myMedia.add(video1);
myMedia.add(photo1);
// Original
System.out.println("Original list:");
printMediaList(myMedia);
// Sorted
System.out.println("Sorted list:");
Media.sort(myMedia);
printMediaList(myMedia);
}
public static void printMediaList(List<Media> myMedia) {
for (int i = 0; i < myMedia.size(); i++) {
System.out.printf("%d. %s\n", i + 1, myMedia.get(i).getName());
}
System.out.println();
}
}
输出此
Original list:
1. Timelapse
2. My pretty picture
Sorted list:
1. My pretty picture
2. Timelapse
希望这会有所帮助。