Room Database в Android с использованием Kotlin

НАВИГАЦИЯ ПО СТРАНИЦЕ

Создание и работа с базой данных Добавление зависимостей Определение сущности Определение DAO Определение базы данных Инициализация базы данных
Операции CRUD Добавление пользователя Получение всех пользователей Получение пользователя по ID Обновление пользователя

Создание и работа с базой данных

  • Добавление зависимостей: В файле 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-запросами и предоставляя безопасные асинхронные операции.