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)
}
- 查詢數(shù)據(jù)
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)