"AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

"AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон

on

  • 1,314 views

"AnnotatedSQL - провайдер с плюшками за 5 минут"

"AnnotatedSQL - провайдер с плюшками за 5 минут"
Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон

Statistics

Views

Total Views
1,314
Views on SlideShare
759
Embed Views
555

Actions

Likes
0
Downloads
1
Comments
0

8 Embeds 555

http://odmob.blogspot.com 300
http://www.odmob.blogspot.com 149
http://odmob.blogspot.ru 87
http://www.odmob.blogspot.ru 10
http://odmob.blogspot.ie 5
http://odmob.blogspot.in 2
http://www.odmob.blogspot.fi 1
http://www.odmob.blogspot.co.uk 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

"AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон Presentation Transcript

  • 1. ANNOTATED SQL Геннадий Дубина
  • 2. Принцип описания схемы• Таблица – интерфейс• Содержит – имя таблицы – имена колонок – path для провайдера• Схема – класс/интерфейс со всеми таблицами
  • 3. Что хочется• Описываем схему один раз• Описываем схему в одном месте• Мало кода• Легкость• Читаемость
  • 4. Создание схемы БД• Написание скриптов руками• Срипты/база в ресурсах• Runtime framework для создания схемы• Annotation processor
  • 5. Inline SQL External SQL RF AnnotationsОдин раз + - + +В одном месте +/- - - +Мало кода - - - +Легкость - +/- + +Читаемость - + + +
  • 6. Annotation SQL• Это не ORM• Никакой магии• Это утилита/плагин для сокращения количества кода• Все можно посмотреть и потрогать• Работает с ant
  • 7. #1 SQL Schema• @Schema• @Table• @Index• @PrimaryKey• @SimpleView• @RawQuery
  • 8. @SchemaКласс содержащий описание всех таблиц ивьюшекАтрибуты • className • dbName • dbVersion
  • 9. @TableДефайним таблицу• @Column – type [INTEGER, REAL, TEXT, BLOB] – defVal• @Autoincrement• @NotNull• @PrimaryKey• @Unique[ROLLBACK, ABORT, FAIL, IGNORE, REPLACE]
  • 10. @IndexСоздаем индекс для таблички. Будет созданиндекс с именем idx_<name>Атрибуты• name• columns
  • 11. @PrimaryKeyСоздаем составной Primary Key для таблицыАтрибуты• collumns
  • 12. @SimpleViewСоздаем view для выборки данных из несколькихтаблиц/viewСтолбцы создаются с именем <alias>_<column>Атрибуты• value – имя view
  • 13. Дефайним вьюшку• @From• @ Join – joinTable – таблица которую присоединяем – joinColumn – onTableAlias – алиас таблицы к которой присоединяем – onColumn – type [INNER, LEFT, RIGHT, CROSS]• @RawJoin – joinTable – таблица переменной – onCondition – raw sql вашего условия – type [INNER, LEFT, RIGHT, CROSS]• @Columns - что выбираем• @IgnoreColumns – ничего не выбираем
  • 14. @RawQueryСоздаем sql запрос который будет выполняться вcontent provider.Как и view только с параметрамиАтрибуты• value – имя запросаПлюшки• @SqlQuery
  • 15. Валидация схемы• Таблица без столбцов• Более одного PrimaryKey для таблицы• Индекс не содержит полей• Дублирующиеся названия таблиц/вьюшек• Существование @From во вьюшке• Существование колонок в таблицах/view @From/@Join• Дублирующиеся alias во view
  • 16. • Пустое название таблицы/столбца/индекса/вьюшки• Индекс можно определить только для таблицы
  • 17. #2 Content ProviderСоздаем полноценный провайдер с помощьюнескольких строк при этом сохраняем human styleПоддерживает:• no-notify• limit• alternative notify uri• bulkInsert• triggers
  • 18. Аннотации• @Provider• @URI• @Trigger• @Triggers
  • 19. @ProviderАтрибуты:• name• schemaClass• authority• openHelperClass
  • 20. @URI• type [DIR, ITEM, DIR_AND_ITEM]• сolumn – по умолчанию _id• altNotify• onlyQuery – по умолчанию falseвсе опционально
  • 21. @ 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){}
  • 22. Human Style
  • 23. Вопросы?