Room使用介紹

2021-10-01 03:57:47 字數 2661 閱讀 8403

在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 的同時,可以流...