android採用sqlite作為資料庫儲存。但sqlite**寫起來繁瑣且容易出錯,所以為了幫助我們編寫出更好的**,android官方推出了乙個orm框架,並將它加入了jetpack當中,這就是本容要講的room。
room 為 sqlite 提供乙個抽象層,以便在充分利用 sqlite 的同時,可以流暢地進行資料庫訪問。
room主要由entity,dao 和 database這三部分組成,每個部分都有明確的職責。
dependencies
import androidx.room.columninfo;
import androidx.room.entity;
import androidx.room.primarykey;
@entity
(tablename =
"employee_table"
)public
class
employee
@override
public string tostring()
';}}
這裡補充以下room框架的一些註解的說明
@entity 宣告所標記的類是乙個資料表,@entity 包括的引數有:tablename(表名),indices(表的索引),primarykeys(主鍵),foreignkeys(外來鍵),ignoredcolumns(忽略實體中的屬性,不作為資料表中的字段),inheritsuperindices(是否整合父類的索引,預設 false)
@columninfo 用來宣告資料庫中的欄位名
@primarykey 被修飾的屬性作為資料表的主鍵,@primarykey 包含乙個引數:autogenerate(是否允許自動建立,預設false)
@embedded 用來修飾巢狀字段,被修飾的屬性中的所有欄位都會存在資料表中
@columninfo.sqlitetypeaffinity 可以在typeaffinity()中使用的sqlite列型別常量,包括:undefined, text, integer, real, blob,其中 undefined 未定義型別關聯,將根據型別解析;text sqlite列型別為 string;integer sqlite列型別為 integer 或 boolean; real sqlite列型別為 float 或 double;blob sqlite列型別為二進位制型別
@dao 將類標記為資料訪問物件(data access object)
@database 將類標記為roomdatabase
@delete 將 dao 中的方法標記為與刪除相關的方法
@embedded 可以用作實體或pojo欄位上的注釋,以指示巢狀字段
@foreignkey 在另乙個實體上宣告外來鍵
@foreignkey.action 可以在ondelete()和onupdate()中使用的值的常量定義。包括:no_action, restrict, set_null, set_default, cascade
@ignore 忽略room的處理邏輯中標記的元素
@index 宣告實體的索引
@insert 將dao注釋類中的方法標記為插入方法
@onconflictstrategy dao方法處理衝突的策略集合,包括:replace, rollback, abort,fail,ignore,其中rollback和fail已經被標記為@deprecated,replace用新的資料行替換舊的資料行;abort直接回滾衝突的事務;ignore保持現有資料行。
@primarykey 將實體中的字段標記為主鍵
@query 將dao注釋類中的方法標記為查詢方法
@rawquery 將dao注釋類中的方法標記為原始查詢方法,可以將查詢作為supportsqlitequery傳遞
@relation 乙個方便的注釋,可以在pojo中用於自動獲取關係實體。
@skipqueryverification 跳過帶注釋元素的資料庫驗證
@transaction 將dao類中的方法標記為事務方法
@typeconverter 將方法標記為型別轉換器
@typeconverters 指定room可以使用的其他型別轉換器
@update 將dao注釋類中的方法標記為更新方法
@dao
public
inte***ce
employeedao
//註解database
@database
(entities =
, version =1)
public
abstract
class
mydatabase
extends
roomdatabase
return databaseinstance;
}//將建立的dao物件以抽象方法的形式返回
public
abstract emperordao getemperordao()
;}
Android Jetpack之Room的學習
android採用sqlite作為資料庫儲存。但sqlite 寫起來繁瑣且容易出錯,所以為了幫助我們編寫出更好的 android官方推出了乙個orm框架,並將它加入了jetpack當中,這就是本容要講的room。room 為 sqlite 提供乙個抽象層,以便在充分利用 sqlite 的同時,可以流...
Android Jetpack之資料繫結初識
加速開發 消除樣板 避免過多地寫重複的樣板 構建高質量的應用 減少崩潰和記憶體洩漏 jetpack其實是一些庫的集合,可組合使用,也可單獨使用 gradle配置,支援databinding 在工程的gradle.properties中配置 建立需要的model xml檔案中匯入model 選中根布局...
博學之,審問之,慎思之,明辨之,篤行之
禮記 中庸 十九章有云 博學之,審問之,慎思之,明辨之,篤行之。這說的是為學的幾個層次,或者說是幾個遞進的階段。博學之 意謂為學首先要廣泛的獵取,培養充沛而旺盛的好奇心。好奇心喪失了,為學的慾望隨之而消亡,博學遂為不可能之事。博 還意味著博大和寬容。惟有博大和寬容,才能相容幷包,使為學具有世界眼光和...