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

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

on

  • 1,274 views

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

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

Statistics

Views

Total Views
1,274
Views on SlideShare
722
Embed Views
552

Actions

Likes
0
Downloads
1
Comments
0

8 Embeds 552

http://odmob.blogspot.com 298
http://www.odmob.blogspot.com 148
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, г. Херсон "AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior Software Developer в DataArt, г. Херсон Presentation Transcript

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