Назад к вопросам
Middle
77
questionbank

Какие аннотации для методов DAO вы знаете?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Вот основные аннотации для методов в Room DAO:

  • @Query: Используется для выполнения произвольных SQL-запросов. Возвращает данные или количество измененных строк/удалений.

    @Query("SELECT * FROM users WHERE id = :userId")
    fun getUserById(userId: Long): User?
    
  • @Insert: Помечает метод для вставки одной или нескольких сущностей в базу данных. Может возвращать Long (для одного вставленного ID), LongArray (для нескольких) или ничего (Unit).

    @Insert
    fun insertUser(user: User): Long
    
  • @Update: Помечает метод для обновления одной или нескольких сущностей в базе данных по их первичному ключу. Возвращает количество обновленных строк (Int).

    @Update
    fun updateUser(user: User): Int
    
  • @Delete: Помечает метод для удаления одной или нескольких сущностей из базы данных по их первичному ключу. Возвращает количество удаленных строк (Int).

    @Delete
    fun deleteUser(user: User): Int
    
  • @Transaction: Используется для выполнения нескольких операций DAO в одной транзакции. Гарантирует атомарность: либо все операции успешны, либо ни одна не выполняется.

    @Transaction
    @Query("SELECT * FROM playlists WHERE creatorId = :creatorId")
    fun getPlaylistsWithSongsByCreator(creatorId: Long): List<PlaylistWithSongs>