3. Принцип описания схемы
• Таблица – интерфейс
• Содержит
– имя таблицы
– имена колонок
– path для провайдера
• Схема –
класс/интерфейс со
всеми таблицами
4. Что хочется
• Описываем схему один раз
• Описываем схему в одном месте
• Мало кода
• Легкость
• Читаемость
5. Создание схемы БД
• Написание скриптов руками
• Срипты/база в ресурсах
• Runtime framework для создания схемы
• Annotation processor
6. Inline SQL External SQL RF Annotations
Один раз + - + +
В одном месте +/- - - +
Мало кода - - - +
Легкость - +/- + +
Читаемость - + + +
7. Annotation SQL
• Это не ORM
• Никакой магии
• Это утилита/плагин для сокращения
количества кода
• Все можно посмотреть и потрогать
• Работает с ant
14. @SimpleView
Создаем view для выборки данных из нескольких
таблиц/view
Столбцы создаются с именем <alias>_<column>
Атрибуты
• value – имя view
15. Дефайним вьюшку
• @From
• @ Join
– joinTable – таблица которую присоединяем
– joinColumn
– onTableAlias – алиас таблицы к которой присоединяем
– onColumn
– type [INNER, LEFT, RIGHT, CROSS]
• @RawJoin
– joinTable – таблица переменной
– onCondition – raw sql вашего условия
– type [INNER, LEFT, RIGHT, CROSS]
• @Columns - что выбираем
• @IgnoreColumns – ничего не выбираем
16.
17.
18. @RawQuery
Создаем sql запрос который будет выполняться в
content provider.
Как и view только с параметрами
Атрибуты
• value – имя запроса
Плюшки
• @SqlQuery
19. Валидация схемы
• Таблица без столбцов
• Более одного PrimaryKey для таблицы
• Индекс не содержит полей
• Дублирующиеся названия таблиц/вьюшек
• Существование @From во вьюшке
• Существование колонок в таблицах/view
@From/@Join
• Дублирующиеся alias во view
20. • Пустое название
таблицы/столбца/индекса/вьюшки
• Индекс можно определить только для
таблицы
21. #2 Content Provider
Создаем полноценный провайдер с помощью
нескольких строк при этом сохраняем human style
Поддерживает:
• no-notify
• limit
• alternative notify uri
• bulkInsert
• triggers