2023-02-24

android 使用Room數(shù)據(jù)庫:
1痘括、添加依賴:android7.0以上方式
dependencies {
def room_version = "2.3.0"

implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"

// optional - RxJava2 support for Room
implementation "androidx.room:room-rxjava2:$room_version"

// optional - Guava support for Room, including Optional and ListenableFuture
implementation "androidx.room:room-guava:$room_version"

// optional - Test helpers
testImplementation "androidx.room:room-testing:$room_version"

}
其中 def room_version = "2.3.0" 用于指定Room庫的版本號,您可以根據(jù)自己的需求更改版本號够掠。此外烂完,根據(jù)您的項(xiàng)目试疙,您可能不需要添加所有可選依賴項(xiàng)。

添加上述依賴項(xiàng)后抠蚣,您就可以開始使用Room庫了祝旷。

2、創(chuàng)建一個(gè)實(shí)體類(Entity)來表示你要在數(shù)據(jù)庫中存儲的數(shù)據(jù)嘶窄』初耍可以使用注解來指定表名、列名等信息柄冲,例如:
package com.example.kotlindemo.data

import androidx.room.Entity
import androidx.room.PrimaryKey

/**

  • 2吻谋、創(chuàng)建一個(gè)實(shí)體類(Entity)來表示你要在數(shù)據(jù)庫中存儲的數(shù)據(jù)∠趾幔可以使用注解來指定表名漓拾、列名等信息阁最,例如:
  • */
    @Entity(tableName = "users")
    data class User(
    @PrimaryKey val id: Int,
    val name: String,
    val age: Int
    )

3、創(chuàng)建一個(gè)數(shù)據(jù)訪問對象(DAO)接口骇两,它包含用于訪問數(shù)據(jù)庫的操作闽撤,例如插入、查詢等脯颜。可以使用注解來指定操作的SQL語句贩据,例如:
/**

  • 3栋操、創(chuàng)建一個(gè)數(shù)據(jù)訪問對象(DAO)接口,它包含用于訪問數(shù)據(jù)庫的操作饱亮,例如插入矾芙、查詢等〗希可以使用注解來指定操作的SQL語句剔宪,例如:

  • */
    @Dao
    interface UserDao {

    /**

    • 查詢數(shù)據(jù)
      使用@Query注解來定義查詢數(shù)據(jù)的方法。例如:
    • */
      @Query("SELECT * FROM users ")
      fun getAllUsers():List<User>

    /**

    • 查詢數(shù)據(jù)
      使用@Query注解來定義查詢數(shù)據(jù)的方法壹无。例如:
    • */
      @Query("SELECT * FROM users WHERE id = :userId")
      fun getUserById(userId:Int): User

    /**

    • 插入數(shù)據(jù)
      使用@Insert注解來定義插入數(shù)據(jù)的方法葱绒。例如:
    • */
      @Insert
      fun insertUser(user: User)

    /**
    *刪除數(shù)據(jù)
    使用@Delete注解來定義刪除數(shù)據(jù)的方法。例如:

    • */
      @Delete
      fun deleteUser(user: User)

    /**

    • 更新數(shù)據(jù)
      使用@Update注解來定義更新數(shù)據(jù)的方法斗锭。例如:
    • */
      @Update
      fun updateUser(user: User)
      }

4地淀、創(chuàng)建一個(gè)數(shù)據(jù)庫類,它包含用于獲取DAO對象和管理數(shù)據(jù)庫的方法岖是“锘伲可以使用注解來指定數(shù)據(jù)庫的版本號、表信息等豺撑,例如:
package com.example.kotlindemo.data

import androidx.room.Database
import androidx.room.RoomDatabase
import com.example.kotlindemo.interface.UserDao

/**

  • 4烈疚、創(chuàng)建一個(gè)數(shù)據(jù)庫類,它包含用于獲取DAO對象和管理數(shù)據(jù)庫的方法聪轿∫危可以使用注解來指定數(shù)據(jù)庫的版本號、表信息等屹电,例如:
  • */
    @Database(entities = [User::class], version = 1)
    abstract class MyAppDatabase :RoomDatabase() {
    abstract fun userDao():UserDao
    }

5茉唉、room 實(shí)現(xiàn)數(shù)據(jù)增刪改查
在應(yīng)用程序中創(chuàng)建一個(gè)單例實(shí)例來獲取MyAppDatabase對象拉庵。例如:
val db = Room.databaseBuilder(
applicationContext,
MyAppDatabase::class.java,"myAppDatabase"
).build()

    val userDao = db.userDao()

現(xiàn)在,你可以使用userDao對象來操作數(shù)據(jù)庫了,例如:
1忿磅、insertUser插入數(shù)據(jù)

val users = userDao.getAllUsers();
userDao.insertUser(User(1,"Alice",25))
userDao.insertUser(User(2,"Jorge",35))

2、updateUser 更新數(shù)據(jù)
val user = userDao.getUserById(1)
user.age = 26
userDao.updateUser(user)

3队贱、deleteUser 刪除數(shù)據(jù)
val user = userDao.getUserById(1)
userDao.deleteUser(user)

4降铸、查詢數(shù)據(jù)getAllUsers/getUserById
使用@Query注解來定義查詢數(shù)據(jù)的方法兔朦。例如:
val userDao = db.userDao()
val users = userDao.getAllUsers()

val user = userDao.getUserById(1)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市磨确,隨后出現(xiàn)的幾起案子沽甥,更是在濱河造成了極大的恐慌,老刑警劉巖乏奥,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件摆舟,死亡現(xiàn)場離奇詭異,居然都是意外死亡邓了,警方通過查閱死者的電腦和手機(jī)恨诱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來骗炉,“玉大人照宝,你說我怎么就攤上這事【淇” “怎么了厕鹃?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長乍丈。 經(jīng)常有香客問我剂碴,道長,這世上最難降的妖魔是什么诗赌? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任汗茄,我火速辦了婚禮,結(jié)果婚禮上铭若,老公的妹妹穿的比我還像新娘洪碳。我一直安慰自己,他們只是感情好叼屠,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布瞳腌。 她就那樣靜靜地躺著,像睡著了一般镜雨。 火紅的嫁衣襯著肌膚如雪嫂侍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天荚坞,我揣著相機(jī)與錄音挑宠,去河邊找鬼。 笑死颓影,一個(gè)胖子當(dāng)著我的面吹牛各淀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播诡挂,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼碎浇,長吁一口氣:“原來是場噩夢啊……” “哼临谱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起奴璃,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤悉默,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后苟穆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抄课,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年雳旅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了剖膳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡岭辣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出甸饱,到底是詐尸還是另有隱情沦童,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布叹话,位于F島的核電站偷遗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏驼壶。R本人自食惡果不足惜氏豌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望热凹。 院中可真熱鬧泵喘,春花似錦、人聲如沸般妙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽碟渺。三九已至鲜锚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間苫拍,已是汗流浹背芜繁。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留绒极,地道東北人骏令。 一個(gè)月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像集峦,于是被迫代替她去往敵國和親伏社。 傳聞我的和親對象是個(gè)殘疾皇子抠刺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評論 2 353

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