Android Jetpack之Room的學習

2021-10-13 21:00:10 字數 2546 閱讀 8184

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 選中根布局...

博學之,審問之,慎思之,明辨之,篤行之

禮記 中庸 十九章有云 博學之,審問之,慎思之,明辨之,篤行之。這說的是為學的幾個層次,或者說是幾個遞進的階段。博學之 意謂為學首先要廣泛的獵取,培養充沛而旺盛的好奇心。好奇心喪失了,為學的慾望隨之而消亡,博學遂為不可能之事。博 還意味著博大和寬容。惟有博大和寬容,才能相容幷包,使為學具有世界眼光和...