在2023年google io大會上推出的官方資料框框架,其實際上就是對sqlite做了一層封裝。基本原理是通過編譯期註解,根據你配置的表名和表字段生成對應的**,減少開發者的工作量。
1、新增room依賴
dependencies
注意,如果你是將room封裝在module裡面,然後再將module引入到主工程的話,需要將 annotationprocessor 「android.arch.persistence.room:compiler:$1.1.1」 這個也拷貝到主工程的build.gradle裡面,要不然註解不能夠正常生成,專案也執行不起來。2、使用
在使用的過程中,我們需要乙個entity、乙個dao和乙個database。1)、entry類
使用@entity註解,表名這個是其中一張表,另外,如果在屬性的簽名不加任何註解的話,這個屬性就是乙個欄位名,當然,如果你不想直接使用屬性名作為欄位名的話,可以加上 @columninfo(name = 「message」)進行自定義。如果這個實體類的某個字段不想存進資料庫的話,可以加上@ingore.是否是主鍵、外來鍵等也有對應的註解。
@entity(tablename = roomconstant.first_table)
public class firsttable
public void setinfo(string info)
@columninfo(name = "info")
private string info;
public void setmessage(string message)
public int getid()
public string getmessage()
public void setid(int id)
}
2)、dao 類
這個類的作用是配置對應的資料庫操作方法,比如查詢、更新、刪除等,注意,類名前面需要@dao註解。如果是全部查詢、刪除等操作,可以直接傳入對應的entry類,如果是根據某個欄位去查詢,需要自己寫對應的sql語句。
@dao
public inte***ce basedao
@dao
public inte***ce fisttabledao extends basedao
3)、database類
使用@database註解。裡面需要配置你要操作的entry類,可以配置乙個或者多個,version表名這個是哪個版本,如果公升級需要修改的就是這裡。公升級的策略有兩種,一種是完全不要舊版本的資料,增加fallbacktodestructivemigration即可,如果有自定義的公升級策略…後面再講。allowmainthreadqueries表明是否可以在主線程進行操作,一般不建議增加這個配置。配置abstract fisttabledao userdao(); 就可以獲取到進行資料庫操作的例項。
@database(entities = , version = roomconstant.version, exportschema = false)
public abstract class myroomdatabase extends roomdatabase }}
return minstance;
}public static void ondestroy()
public abstract fisttabledao userdao();
public abstract secondtabledao secondtabledao();
public abstract thirdtabledao thirdtabledao();
}
3、設定 schema 的位置
儲存展示資料庫的結構資訊,如果不設定的話,需要再database類上配置exportschema = false,要不然編譯的時候會出現警告。
defaultconfig
}}
4、查詢
經過上面的配置之後,就可以獲取到對應的dao例項進行操作,
myroomdatabase myroomdatabase = myroomdatabase.getinstance(basecontext);
private static void operatefristtable(myroomdatabase myroomdatabase)
listfirsttablelist = fisttabledao.loadallbyids(new int);
if (firsttablelist != null)
}
5、公升級
如果需要進行資料庫的公升級,需要再構造database 例項的時候,呼叫addmigrations進行配置
static final migration migration_1_2 = new migration(1, 2)
};static final migration migration_2_3 = new migration(2, 3)
};
Room資料庫使用
1.新增依賴 implementation android.arch.persistence.room runtime 1.0.0 annotationprocessor android.arch.persistence.room compiler 1.0.0 2.建立entity實體類 每個ent...
Android Jetpack之Room的學習
android採用sqlite作為資料庫儲存。但sqlite 寫起來繁瑣且容易出錯,所以為了幫助我們編寫出更好的 android官方推出了乙個orm框架,並將它加入了jetpack當中,這就是本容要講的room。room 為 sqlite 提供乙個抽象層,以便在充分利用 sqlite 的同時,可以流...
Android Jetpack之Room的學習
android採用sqlite作為資料庫儲存。但sqlite 寫起來繁瑣且容易出錯,所以為了幫助我們編寫出更好的 android官方推出了乙個orm框架,並將它加入了jetpack當中,這就是本容要講的room。room 為 sqlite 提供乙個抽象層,以便在充分利用 sqlite 的同時,可以流...