Room Database в Android с использованием Kotlin
НАВИГАЦИЯ ПО СТРАНИЦЕ
Создание и работа с базой данных
Добавление зависимостей : В файле build.gradle (Module: app) добавьте зависимость для Room:
В файле build.gradle (Module: app) добавьте зависимость для Room:
implementation "androidx.room:room-runtime:2.3.0"
kapt "androidx.room:room-compiler:2.3.0"
Определение сущности (Entity): Создайте класс, представляющий таблицу в базе данных:
import androidx.room.Entity
import androidx.room.PrimaryKey
@Entity(tableName = "users")
data class User(
@PrimaryKey(autoGenerate = true)
val id: Long = 0,
val name: String,
val age: Int
)
Определение DAO (Data Access Object): Создайте интерфейс, описывающий операции базы данных:
import androidx.room.Dao
import androidx.room.Insert
import androidx.room.Query
import androidx.room.Update
@Dao
interface UserDao {
@Insert
suspend fun insertUser(user: User)
@Query("SELECT * FROM users")
suspend fun getAllUsers(): List<User>
@Query("SELECT * FROM users WHERE id = :userId")
suspend fun getUserById(userId: Long): User?
@Update
suspend fun updateUser(user: User)
// Дополнительные операции CRUD...
}
Определение базы данных : Создайте абстрактный класс, представляющий саму базу данных и объединяющий сущности и DAO:
import androidx.room.Database
import androidx.room.RoomDatabase
@Database(entities = [User::class], version = 1, exportSchema = false)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}
Инициализация базы данных : В классе Application или активности инициализируйте базу данных:
import android.app.Application
import androidx.room.Room
class MyApp : Application() {
companion object {
lateinit var database: AppDatabase
}
override fun onCreate() {
super.onCreate()
database = Room.databaseBuilder(this, AppDatabase::class.java, "my_database")
.build()
}
}
Операции CRUD
Примеры операций CRUD с использованием Room:
Добавление пользователя :
val newUser = User(name = "John Doe", age = 25)
MyApp.database.userDao().insertUser(newUser)
Получение всех пользователей :
val allUsers = MyApp.database.userDao().getAllUsers()
Получение пользователя по ID :
val userId = 1L
val user = MyApp.database.userDao().getUserById(userId)
Обновление пользователя :
val updatedUser = user?.copy(name = "Updated Name")
if (updatedUser != null) {
MyApp.database.userDao().updateUser(updatedUser)
}
Это основы работы с Room Database в Android с использованием Kotlin. Room предоставляет удобный способ взаимодействия с базой данных, обеспечивая абстракцию над сложностью работы с SQL-запросами и предоставляя безопасные асинхронные операции.