1、建立你的room类 更新时要写更新语法
java
public class XxxRoom {
private static final String TAG = "TAG";
private static volatile XxxRoom instance = null;
private static final String DB_NAME = "xxx_db";
private XxxDataBase mXxxDatabase;
private Context applicationContext;
//版本更新
public static final Migration MIGRATION_1_2 = new Migration(1, 2) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
database.execSQL("ALTER TABLE LastSong ADD COLUMN biz_id integer NOT NULL DEFAULT 0");
}
};
public static final Migration MIGRATION_3_4 = new Migration(3, 4) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
database.execSQL("ALTER TABLE LastSong ADD COLUMN biz_topic text");
}
};
public static XxxRoom getInstance() {
XxxRoom result = instance;
if (result == null) {
synchronized (XxxRoom .class) {
result = instance;
if (result == null) {
instance = result = new XxxRoom();
}
}
}
return result;
}
public void init(Context context) {
try {
applicationContext = context.getApplicationContext();
mXxxDatabase = Room.databaseBuilder(applicationContext, XxxDataBase.class, DB_NAME)
.allowMainThreadQueries()
.fallbackToDestructiveMigration()//数据库更新时删除数据重新创建
.addMigrations(MIGRATION_1_2)
.addMigrations(MIGRATION_3_4)
.build();
} catch (Exception exception) {
DLog.e(TAG, "日志输出------>exception:" + exception);
}
}
public XxxDataBase getXxxDatabase() {
return mXxxDatabase;
}
public Context getApplicationContext() {
return applicationContext;
}
}
2、建立你的RoomDatabase类
csharp
@Database(entities = {SongProcess.class, LastSong.class, AlbumSong.class,
LocalSongProcess.class, LocalLastSong.class, LocalAlbumSong.class}, version = 5)
public abstract class XxxDataBase extends RoomDatabase {
public abstract SongProcessDao getSongProcessDao();
public abstract LastSongDao getLastSongDao();
public abstract AlbumSongDao getAlbumSongDao();
public abstract LocalSongProcessDao getLocalSongProcessDao();
public abstract LocalLastSongDao getLocalLastSongDao();
public abstract LocalAlbumSongDao getLocalAlbumSongDao();
}
3、建立bean类
typescript
/**
* 上次播放的歌曲 只有一条数据 给首页播放控制用的
*/
@Entity(tableName = "LastSong")
public class LastSong {
@PrimaryKey(autoGenerate = true)
public int id;
@ColumnInfo
private String book_name; //书名
@ColumnInfo
private int book_id; //书id
@ColumnInfo
private String song_name; //歌曲名
@ColumnInfo
private int index; //单元指针
@ColumnInfo
private String song_cover; //歌曲封面
@ColumnInfo
private String biz_topic; //歌曲专辑主题
@ColumnInfo
private int biz_id; //专辑ID
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getBook_name() {
return book_name;
}
public void setBook_name(String book_name) {
this.book_name = book_name;
}
public int getBook_id() {
return book_id;
}
public void setBook_id(int book_id) {
this.book_id = book_id;
}
public String getSong_name() {
return song_name;
}
public void setSong_name(String song_name) {
this.song_name = song_name;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
public String getSong_cover() {
return song_cover;
}
public void setSong_cover(String song_cover) {
this.song_cover = song_cover;
}
public int getBiz_id() {
return biz_id;
}
public void setBiz_id(int biz_id) {
this.biz_id = biz_id;
}
public String getBiz_topic() {
return biz_topic;
}
public void setBiz_topic(String biz_topic) {
this.biz_topic = biz_topic;
}
@Override
public String toString() {
return "LastSong{" +
"id=" + id +
", book_name='" + book_name + ''' +
", book_id=" + book_id +
", song_name='" + song_name + ''' +
", index=" + index +
", song_cover='" + song_cover + ''' +
", biz_id='" + biz_id + ''' +
", biz_topic='" + biz_topic + ''' +
'}';
}
}
4、建立Dao接口类
java
@Dao
public interface LastSongDao {
@Insert
long insertInfo(LastSong data);
@Insert
void insertInfo(LastSong... datas);
@Update
void updateInfo(LastSong... datas);
@Delete
void deleteInfo(LastSong... datas);
@Query("SELECT * FROM LastSong ORDER BY id DESC")
List<LastSong> getAll(); //获取所有
@Query("DELETE FROM LastSong")
void deleteAllInfo(); //删除所有
}
5、调用代码
scss
//获取上次播放的歌曲
List<LastSong> list = XxxRoom.getInstance().getXxxDatabase().getLastSongDao().getAll();
//删除
XxxRoom.getInstance().getXxxDatabase().getLastSongDao().deleteAllInfo();