我有3个表,“播放列表”,“歌曲”和“ Playlist_Song”。 Playlist_Song具有playlist_id外键和user_id外键。我需要获取特定播放列表中的歌曲列表,因此我想对Playlist_Song进行数据库调用,以返回所有带有playlist_id的条目。

然后,我使用歌曲ID对歌曲表进行数据库调用,以检索这些歌曲。我觉得这是非常低效的,应该有一个更好的方法,但是我真的不知道该怎么做。有什么建议?

  public List<Song> getSongsInPlaylist(final int playlistId) {

  final List<PlaylistSong> playlistSongs = playlistSongDao.getPlaylistSong(playlistId);

  if (!playlistSongs.isEmpty()) {
     final List<Song> songs = new ArrayList<>();
     for (PlaylistSong existingPlaylistSong : playlistSongs) {
        songs.add(songDao.findById(existingPlaylistSong.getSongId()).get());
     }

     return songs;
  }

最佳答案

作为歌曲ID的列表传递到songDao,并在一个查询中作为列表检索。
songDao.findByIdIn(列出songIds)。

07-24 13:11