Android room數(shù)據(jù)庫(kù)注解

@Entity:使用Room定義一個(gè)數(shù)據(jù)實(shí)體User(帶Entity注解的類),一個(gè)Entity表由主鍵和一個(gè)或多個(gè)列組成,User中的每個(gè)實(shí)例都代表著User表中的一行仪或,tableName后面為表名颖系,在不指定表名的情況下,默認(rèn)將類名作為數(shù)據(jù)表的名稱忆蚀。
@ColumnInfo:Room默認(rèn)使用字段名稱作為列名稱矾利,如需更改,采用@ColumnInfo注解設(shè)置name屬性(列名)蜓谋。

    @ColumnInfo(name = "user_name",typeAffinity = ColumnInfo.TEXT,defaultValue = "默認(rèn)值")

@Ignore:表示會(huì)忽略這個(gè)字段梦皮,不進(jìn)行記錄
@PrimaryKey :每一個(gè)實(shí)體類都需要一個(gè)唯一的標(biāo)識(shí)即主鍵。
@NonNull:該字段不可為空
@Embedded :實(shí)體類中引用其它實(shí)體類
Room 不允許對(duì)象引用,通過(guò)@TypeConverter自定義類型轉(zhuǎn)換器
@Embedded——引用其它實(shí)體類:假如實(shí)體類中包含了多個(gè)同一類型的嵌入字段(比如一個(gè)人User擁有兩本Book)桃焕,我們可以通過(guò)設(shè)置prefix屬性來(lái)保持每列的唯一性剑肯。Room會(huì)將提供的值添加到嵌入對(duì)象的每個(gè)列名的開頭。

//@Embedded(prefix = "one"),這個(gè)是區(qū)分唯一性的观堂,
//比如說(shuō)一這個(gè)人有2本書并添加了tag让网,那么在數(shù)據(jù)表中就會(huì)以prefix+屬性值命名
@Embedded(prefix = "one")
private Book address;
@Embedded(prefix = "two")
private Book address;

@Dao: 使用@Dao注解定義為一個(gè)BaseDao接口呀忧,增加基本的插入、刪除溃睹、修改方法而账,再定義一個(gè)UserDao去擴(kuò)展BaseDao接口,增加需要的方法因篇。
@Insert:插入泞辐,可以定義將其參數(shù)插入數(shù)據(jù)庫(kù)中的相應(yīng)表的方法

OnConflictStrategy.REPLACE:沖突策略是取代舊數(shù)據(jù)同時(shí)繼續(xù)事務(wù)
OnConflictStrategy.ROLLBACK:沖突策略是回滾事務(wù)
OnConflictStrategy.ABORT:沖突策略是終止事務(wù)
OnConflictStrategy.FAIL:沖突策略是事務(wù)失敗
OnConflictStrategy.IGNORE:沖突策略是忽略沖突
最新代碼中ROLLBACK 和 FAIL 已經(jīng)deprecated了,使用ABORT替代

@Delete:刪除竞滓,可以定義用于從數(shù)據(jù)庫(kù)表中刪除特定行的方法
@Update:修改咐吼,可以定義用于更新數(shù)據(jù)庫(kù)表中特定行的方法
@Query: 查詢,可以從應(yīng)用的數(shù)據(jù)庫(kù)查詢指定數(shù)據(jù)商佑,用于更加復(fù)雜的插入锯茄、刪除、更新操作

@DataBase:定義用戶保存數(shù)據(jù)庫(kù)的MyDataBase類茶没,定義數(shù)據(jù)庫(kù)配置肌幽。
@exportSchema:是否導(dǎo)出數(shù)據(jù)庫(kù)表,默認(rèn)true
如果不指定,需要將exportSchema = false,或者在app的build.gradle里設(shè)置對(duì)應(yīng)的路徑,否則會(huì)出現(xiàn)如下報(bào)錯(cuò)

Schema export directory is not provided to the annotation processor so we cannot export the schema. You can either provide `room.schemaLocation` annotation processor argument OR set exportSchema to false.
        //指定room.schemaLocation生成的文件路徑, java環(huán)境(兩者選一抓半,看項(xiàng)目環(huán)境)
    defaultConfig {
        javaCompileOptions {
            annotationProcessorOptions {
                arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]
            }
        }


        //指定room.schemaLocation生成的文件路徑, kotlin環(huán)境 (兩者選一喂急,看項(xiàng)目環(huán)境)
        kapt {
            arguments {
                arg("room.schemaLocation", "$projectDir/schemas")
            }
        }
   }

@Database(entities = {User.class, Book.class}, version = 2,exportSchema = false)

@DeleteTable:刪除數(shù)據(jù)表
DROP TABLE user_table
@RenameTable: 重命名數(shù)據(jù)表
database.execSQL("RENAME TABLE user_table to new_table_name");
@DeleteColumn:刪除數(shù)據(jù)表中的列
database.execSQL("ALTER TABLE user_table ADD COLUMN job TEXT");
@RenameColumn:重命名數(shù)據(jù)表中的列
database.execSQL("ALTER TABLE user_table RENAME COLUMN job TO user_job");

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市琅关,隨后出現(xiàn)的幾起案子煮岁,更是在濱河造成了極大的恐慌,老刑警劉巖涣易,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件画机,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡新症,警方通過(guò)查閱死者的電腦和手機(jī)步氏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)徒爹,“玉大人荚醒,你說(shuō)我怎么就攤上這事÷⌒幔” “怎么了界阁?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)胖喳。 經(jīng)常有香客問(wèn)我泡躯,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任较剃,我火速辦了婚禮咕别,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘写穴。我一直安慰自己惰拱,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布啊送。 她就那樣靜靜地躺著偿短,像睡著了一般。 火紅的嫁衣襯著肌膚如雪删掀。 梳的紋絲不亂的頭發(fā)上翔冀,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天导街,我揣著相機(jī)與錄音披泪,去河邊找鬼。 笑死搬瑰,一個(gè)胖子當(dāng)著我的面吹牛款票,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播泽论,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼艾少,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了翼悴?” 一聲冷哼從身側(cè)響起缚够,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鹦赎,沒(méi)想到半個(gè)月后谍椅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡古话,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年雏吭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片陪踩。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡杖们,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肩狂,到底是詐尸還是另有隱情摘完,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布傻谁,位于F島的核電站孝治,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜荆秦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一篱竭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧步绸,春花似錦掺逼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至刑桑,卻和暖如春氯质,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背祠斧。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工闻察, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人琢锋。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓辕漂,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親吴超。 傳聞我的和親對(duì)象是個(gè)殘疾皇子钉嘹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容