- Эта серия будет посвящена основам базы данных SQLite. Я буду следовать официальному руководству Google, ЗДЕСЬ но я буду работать в том порядке, который имеет для меня больше смысла.
Версия на Youtube
здесь
Что такое ДАО?
Отличный вопрос! Когда мы используем библиотеку персистентности Room для хранения данных нашего приложения, мы используем
объекты доступа к данным (DAO)для взаимодействия с данными.Каждый DAO будет включать методы, которые предлагают абстрактный доступ к базе данных нашего приложения. Во время компиляции Room автоматически сгенерирует реализацию DAO, которую мы определяем.
Используя DAO вместо прямого запроса SQLite, мы создаем гораздо более чистую и тестируемую кодовую базу.
Определение DAO
- При создании DAO мы должны определить его либо как интерфейс, либо как абстрактный класс. Однако для простых примеров, подобных тем, которые мы используем, рекомендуется использовать интерфейс.
@Dao
public interface WordDAO {
@Insert
void insert(Word word);
@Query("DELETE FROM word_table")
void deleteAll();
@Query("SELECT * FROM word_table")
List getAllWords();
}
@Dao
Чтобы создать DAO, мы должны аннотировать наш интерфейс с помощью
@Dao. Это то, что сообщает библиотеке the Room, что этот класс представляет объект доступа к данным.Когда мы создаем DAO, существует два типа методов, которые используются для определения операций с базой данных.
1) Удобные методы: Это основные операции, которые были определены для нас как аннотации. @Вставить , @Обновление , @Удалить .
2) Методы запроса: Методы, помеченные @Query и позвольте нам написать ваши собственные SQL-запросы для взаимодействия с базой данных.
@Вставить
- Это помечает метод в
@Daoаннотированном классе как метод вставки. Когда Room реализует этот метод, он вставит свои параметры в базу данных. Все параметры метода insert должны быть либо классом, аннотированным@Entity, либо коллекцией/массивом аннотированных классов. Обратите внимание, что наш параметр представляет собой класс word, который аннотируется с помощью@Entity
@Query(“УДАЛИТЬ ИЗ word_table”)
- Как указывалось ранее, это метод запроса, и мы используем его для выполнения инструкции SQL. Как вы, вероятно, можете догадаться, это используется для удаления всех строк из нашей таблицы под названием word_table, но давайте немного углубимся в SQL. При попытке удалить что-либо из таблицы в SQL мы используем предложение
DELETEи синтаксис обычно выглядит следующим образом:
DELETE FROM table_name WHERE condition
все предложения SQL написаны в верхнем регистреТеперь в нашем запросе мы не указали условие, так что это означает, что наш оператор sql удалит все строки внутри вашей word_table.
@Query(“ВЫБРАТЬ * ИЗ word_table”)
- Здесь мы используем предложение SELECT в сочетании с предложением FROM , и оно используется для определения того, в какой таблице мы хотим выполнить поиск. Символ
*указывает на все столбцы и строки. В вольном переводе на человеческую речь это заявление гласит:
Покажите мне все столбцы и все строки в word_table
- Последнее, на что я хочу обратить внимание, – это тип возвращаемого значения для метода
getAllWords(). В настоящее время он имеет возвращаемый тип List и использует Generics, чтобы убедиться, что во время выполнения наш список содержит объекты Word. В будущих сообщениях в блоге этот возвращаемый тип будет изменен на Текущие данные.
- Спасибо, что нашли время в свой рабочий день, чтобы прочитать этот мой пост в блоге. Если у вас есть какие-либо вопросы или сомнения, пожалуйста, прокомментируйте ниже или свяжитесь со мной по адресу Твиттер .
Оригинал: “https://dev.to/theplebdev/room-database-doas-2caf”