網(wǎng)站建設(shè)論文的前言南京seo排名優(yōu)化
依賴
"androidx.room:room-runtime:2.2.6" "androidx.room:room-compiler:2.2.6"
1.實(shí)體類
實(shí)體類需要保存到數(shù)據(jù)庫的新類用@Entity注解表示
tableName是數(shù)據(jù)庫中表的名字,my_advert可以根據(jù)自己需要自定義
?@PrimaryKey,@NonNull主鍵不能為空
@Entity(tableName = "my_advert") public class MyAdvertBean { /** * 素材id, */ @PrimaryKey @NonNull private String moduleId; /** * 廣告日期,一天一重置 */ private String date; /** * 存儲(chǔ)廣告的 */ private String message; @NonNull public String getModuleId() { return moduleId; } public void setModuleId(@NonNull String moduleId) { this.moduleId = moduleId; } public String getDate() { return date; } public void setDate(String date) { this.date = date; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }
2.定義數(shù)據(jù)庫增刪改查
關(guān)鍵注解:@Insert增,@Delete刪,@Update改,@Query查
@Dao public interface MyAdvertDao {/*** 根據(jù)id查詢保存的廣告* @param moduleId 模塊id* @return*/@Query("select * from my_advert where moduleId = :moduleId LIMIT 1")MyAdvertBean queryMyAdvert(String moduleId);/*** 刪除本地廣告* @param myAdvertBean 廣告*/@Deletevoid deleteAdvert(MyAdvertBean myAdvertBean);/*** 廣告保存本地* @param myAdvertBean 廣告*/@Insert(onConflict = OnConflictStrategy.REPLACE)void insertAdvert(MyAdvertBean myAdvertBean);/*** 更新本地廣告信息* @param myAdvertBean 廣告*/@Updatevoid updateAdvert(MyAdvertBean myAdvertBean); }
3.數(shù)據(jù)庫升級(jí)等操作Base,繼承RoomDataBase
@Database注解用來標(biāo)注數(shù)據(jù)庫中有哪幾張表,自己新加的MyAdvertBean加入里面 ,然后version增加版本1,從5到6
@TypeConverters是用來list數(shù)據(jù)存儲(chǔ)
數(shù)據(jù)庫版本原來是5,我需要插入新的表,執(zhí)行MIGRATION_5_6,版本需要加1
@Database(entities = {UserEntity.class, BrowseRecordEntity.class, MyAdvertBean.class}, version = 6) @TypeConverters({BaseObjDataConvert.class}) public abstract class UserDatabase extends BaseDatabase {public abstract UserDao getUserDao();public abstract BrowseRecordDao getRecordDao();public abstract MyAdvertDao getMyAdvertDao();private static UserDatabase instance;public static UserDatabase getInstance() {if (instance == null) {synchronized (UserDatabase.class) {if (instance == null) {instance = Room.databaseBuilder(Utils.getApp(), UserDatabase.class, "shandian").addMigrations(MIGRATION_2_3, MIGRATION_3_4, MIGRATION_4_5,MIGRATION_5_6).allowMainThreadQueries().build();}}}return instance;}static final Migration MIGRATION_2_3 = new Migration(2, 3) {@Overridepublic void migrate(@NonNull SupportSQLiteDatabase database) {database.execSQL("alter table user add column sex TEXT");database.execSQL("alter table user add column birthday TEXT");database.execSQL("alter table user add column signature TEXT");database.execSQL("alter table user add column totalScore Text");database.execSQL("alter table user add column score Text");}};static final Migration MIGRATION_3_4 = new Migration(3, 4) {@Overridepublic void migrate(@NonNull SupportSQLiteDatabase database) {database.execSQL("CREATE TABLE IF NOT EXISTS browse_record (type TEXT, articleId TEXT PRIMARY KEY NOT NULL,opentype TEXT," +"param TEXT,title TEXT,publish_at_time INTEGER NOT NULL DEFAULT 0)");}};static final Migration MIGRATION_4_5 = new Migration(4, 5) {@Overridepublic void migrate(@NonNull SupportSQLiteDatabase database) {database.execSQL("alter table browse_record add column browse_time INTEGER NOT NULL DEFAULT 0");}};/*** 廣告數(shù)據(jù)庫表*/static final Migration MIGRATION_5_6 = new Migration(5, 6) {@Overridepublic void migrate(@NonNull SupportSQLiteDatabase database) {database.execSQL("CREATE TABLE IF NOT EXISTS my_advert (date TEXT, moduleId TEXT PRIMARY KEY NOT NULL,message TEXT)");}};}
public class BaseObjDataConvert{@TypeConverterpublic NavconfigBean revert(String data) {try {return GsonUtils.fromJson(data, NavconfigBean.class);} catch (Exception e) {e.printStackTrace();}return null;}@TypeConverterpublic String convert(NavconfigBean data) {return GsonUtils.toJson(data);} }