"annotatedsql - провайдер с плюшками за 5 минут" -...
DESCRIPTION
"AnnotatedSQL - провайдер с плюшками за 5 минут" Геннадий Дубина, Senior Software Developer в DataArt, г. ХерсонTRANSCRIPT
![Page 1: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/1.jpg)
ANNOTATED SQL
Геннадий Дубина
![Page 2: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/2.jpg)
![Page 3: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/3.jpg)
• Таблица – интерфейс• Содержит
– имя таблицы– имена колонок– path для провайдера
• Схема – класс/интерфейс со всеми таблицами
Принцип описания схемы
![Page 4: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/4.jpg)
Что хочется• Описываем схему один раз• Описываем схему в одном месте• Мало кода• Легкость• Читаемость
![Page 5: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/5.jpg)
Создание схемы БД
• Написание скриптов руками• Срипты/база в ресурсах• Runtime framework для создания схемы• Annotation processor
![Page 6: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/6.jpg)
Inline SQL External SQL RF Annotations
Один раз + - + +
В одном месте +/- - - +
Мало кода - - - +
Легкость - +/- + +
Читаемость - + + +
![Page 7: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/7.jpg)
Annotation SQL• Это не ORM• Никакой магии• Это утилита/плагин для сокращения
количества кода• Все можно посмотреть и потрогать • Работает с ant
![Page 8: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/8.jpg)
#1 SQL Schema• @Schema• @Table• @Index• @PrimaryKey• @SimpleView• @RawQuery
![Page 9: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/9.jpg)
@Schema
Класс содержащий описание всех таблиц и вьюшекАтрибуты
• className• dbName• dbVersion
![Page 10: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/10.jpg)
@Table
• @Column– type [INTEGER, REAL, TEXT, BLOB]– defVal
• @Autoincrement• @NotNull• @PrimaryKey• @Unique[ROLLBACK, ABORT, FAIL, IGNORE, REPLACE]
Дефайним таблицу
![Page 11: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/11.jpg)
![Page 12: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/12.jpg)
@Index
Создаем индекс для таблички. Будет создан индекс с именем idx_<name> Атрибуты• name • columns
![Page 13: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/13.jpg)
@PrimaryKey
Создаем составной Primary Key для таблицыАтрибуты• collumns
![Page 14: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/14.jpg)
@SimpleView
Создаем view для выборки данных из нескольких таблиц/viewСтолбцы создаются с именем <alias>_<column>
Атрибуты• value – имя view
![Page 15: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/15.jpg)
Дефайним вьюшку• @From• @ Join
– joinTable – таблица которую присоединяем – joinColumn– onTableAlias – алиас таблицы к которой присоединяем– onColumn– type [INNER, LEFT, RIGHT, CROSS]
• @RawJoin– joinTable – таблица переменной – onCondition – raw sql вашего условия – type [INNER, LEFT, RIGHT, CROSS]
• @Columns - что выбираем• @IgnoreColumns – ничего не выбираем
![Page 16: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/16.jpg)
![Page 17: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/17.jpg)
![Page 18: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/18.jpg)
@RawQuery
Создаем sql запрос который будет выполняться в content provider.Как и view только с параметрами
Атрибуты• value – имя запроса
Плюшки • @SqlQuery
![Page 19: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/19.jpg)
Валидация схемы • Таблица без столбцов• Более одного PrimaryKey для таблицы• Индекс не содержит полей• Дублирующиеся названия таблиц/вьюшек• Существование @From во вьюшке• Существование колонок в таблицах/view
@From/@Join• Дублирующиеся alias во view
![Page 20: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/20.jpg)
• Пустое название таблицы/столбца/индекса/вьюшки
• Индекс можно определить только для таблицы
![Page 21: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/21.jpg)
#2 Content Provider
Поддерживает: • no-notify• limit• alternative notify uri• bulkInsert• triggers
Создаем полноценный провайдер с помощью нескольких строк при этом сохраняем human style
![Page 22: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/22.jpg)
Аннотации• @Provider• @URI• @Trigger• @Triggers
![Page 23: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/23.jpg)
@Provider
Атрибуты:• name• schemaClass• authority• openHelperClass
![Page 24: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/24.jpg)
@URI• type [DIR, ITEM, DIR_AND_ITEM]• сolumn – по умолчанию _id• altNotify • onlyQuery – по умолчанию false
все опционально
![Page 25: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/25.jpg)
![Page 26: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/26.jpg)
@ Trigger• name• type [INSERT, DELETE, UPDATE, ALL]• when [BEFORE, AFTER]
on<Name><When>Inserted(ContentValues values){}
on<Name><When>Deleted(Uri uri, String selection, String[] selectionArgs){}
on<Name><When>Updated(Uri uri, ContentValues values, String selection, String[] selectionArg){}
![Page 27: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/27.jpg)
![Page 28: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/28.jpg)
Human Style
![Page 29: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/29.jpg)
![Page 30: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/30.jpg)
![Page 31: "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон](https://reader030.vdocuments.mx/reader030/viewer/2022020115/549fd7e9ac795982328b4609/html5/thumbnails/31.jpg)
Вопросы?