Выборка
Тип метаданных query
Библиотека компонентов
http://n2oapp.net/framework/config/schema/query-4.0
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию |
---|---|---|---|
name | Строка | Наименование выборки | |
object-id | Ссылка на объект | Объект выборки | |
route | Строка | URL выборки | Идентификатор выборки |
Пример
<?xml version='1.0' encoding='UTF-8'?><query xmlns="http://n2oapp.net/framework/config/schema/query-4.0" object-id="myObject" name="Моя выборка"> <list> <sql>SELECT :select FROM mytable WHERE :filters ORDER BY :sorting LIMIT :limit OFFSET :offset</sql> </list> <count> <sql>SELECT count(*) FROM mytable WHERE :filters</sql> </count> <fields> ... </fields></query>
#
<list>Получение списка записей по определенным фильтрам.
note
В выборке может быть несколько <list> с разными наборами фильтров (атрибут filters).
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию |
---|---|---|---|
filters | Идентификаторы через запятую | Идентификаторы фильтров (filter-id ). При наличии хотя бы одного из фильтров сработает этот провайдер данных. | |
mapper | dataset, spel, javascript, groovy | Способ маппинга фильтров в параметры провайдера | dataset |
result-mapping | Строка | Маппинг списка результатов | Для каждого провайдера данных свои значения по умолчанию |
count-mapping | Строка | Маппинг общего количества записей | Для каждого провайдера данных свои значения по умолчанию |
Тело
Пример
<list filters="firstNameLike, lastNameLike"> <sql>SELECT first_name, last_name FROM mytable WHERE first_name like '%'||:first_name OR last_name '%'||:last_name </sql></list><fields> <field id="firstName"> <filters> <like filter-id="firstNameLike" mapping="first_name"/> </filters> </filed> <field id="lastName"> <filters> <like filter-id="lastNameLike" mapping="last_name"/> </filters> </filed></fields>
#
<count>Получение количества записей.
note
В выборке может быть несколько <count> с разными наборами фильтров (атрибут filters).
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию |
---|---|---|---|
mapper | dataset, spel, javascript, groovy | Способ маппинга фильтров в параметры провайдера | dataset |
count-mapping | Строка | Маппинг общего количества записей | Для каждого провайдера данных свои значения по умолчанию |
filters | Идентификаторы через запятую | Идентификаторы фильтров (filter-id ). При наличии хотя бы одного из фильтров сработает этот провайдер данных. |
Тело
Пример
<count filters="firstNameLike"> <sql>SELECT count(*) FROM mytable</sql></count>
#
<unique>Получение уникальной записи по определенным фильтрам.
note
В выборке может быть несколько <unique> с разными наборами фильтров (атрибут filters).
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию |
---|---|---|---|
filters | Идентификаторы через запятую | Идентификаторы фильтров (filter-id ). При наличии хотя бы одного из фильтров сработает этот провайдер данных. | |
mapper | dataset, spel, javascript, groovy | Способ маппинга фильтров в параметры провайдера | dataset |
result-mapping | Строка | Маппинг результата | Для каждого провайдера данных свои значения по умолчанию |
Тело
Пример
<unique filters="id"> <sql>SELECT first_name, last_name FROM mytable WHERE id = :id </sql><unique><fields> <field id="id"> <filters> <eq/> </filters> </field></fields>
#
<fields>Поля выборки.
#
<field>Поле выборки.
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию |
---|---|---|---|
id | Строка | Идентификатор поля | |
name | Строка | Наименование поля | Наименование аналогичного поля в объекте |
domain | Тип данных | Тип данных | string |
#
<select>Способ получения данных из поля выборки.
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию |
---|---|---|---|
mapping | Выражение | Маппинг данных поля из провайдера | Совпадает с id |
default-value | Строка | Значение, которое проставится в поле, если в провайдере оно пустое |
Тело
Определяет как получать это поле выборки в провайдере.
Например, в случае SQL провайдера задаёт значение плейсхолдера :select
.
Пример
<page> <sql>SELECT :select FROM mytable</sql></page>...<field> <select mapping="fname" default-value="Неизвестный">first_name as fname</select></field>
#
<filters>Способы фильтрации поля выборки.
Элементы
Наименование | Тип | Описание | Значение по умолчанию |
---|---|---|---|
<eq> | Выражение | Фильтр эквивалентности | |
<in> | Выражение | Фильтр вхождения хотя бы одного в список | |
<like> | Выражение | Фильтр вхождения подстроки в строку | |
<like-start> | Выражение | Фильтр начала подстроки | |
<is-null> | Выражение | Фильтр пустого поля | |
<contains> | Выражение | Фильтр вхождения списка в список | |
<overlaps> | Выражение | Фильтр пересечения списка со списком | |
<more> | Выражение | Фильтр больше | |
<less> | Выражение | Фильтр меньше | |
<not-eq> | Выражение | Фильтр не эквивалентности | |
<not-in> | Выражение | Фильтр не вхождения в список | |
<is-not-null> | Выражение | Фильтр не пустого поля |
Базовые Атрибуты
Наименование | Тип | Описание | Значение по умолчанию |
---|---|---|---|
filter-id | Строка | Идентификатор фильтра | |
mapping | Выражение | Маппинг значения фильтра в параметры провайдера | Эквивалентен id |
domain | Тип данных | Тип, в который будет конвертировано значение при отправке в провайдер | Эквивалентен domain от <field> с преобразованием в список для множественных типов |
default-value | Строка | Значение, по которому будет идти постоянная фильтрация, если для этогофильтра не передано другое значение | |
normalize | Строка | Выражение для предварительного преобразования входных данных. |
Пример
<filters> <eq mapping="gender_id" default-value="1">gender_id = :gender_id</eq> <in filter-id="genders*.id" mapping="genders" domain="integer[]">gender_id in (:genders)</in> <like filter-id="gender.name" domain="string" normalize="#this.toLowerCase()"/></filters>
#
<sorting>Способ сортировки поля выборки.
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию |
---|---|---|---|
mapping | Выражение | Маппинг плейсхолдера направления сортировки в провайдере | [fieldId]Direction |
Тело
Определяет как сортировать это поле выборки в провайдере.
Например, в случае SQL провайдера задаёт значение плейсхолдера :sorting
.
Пример
<page> <sql>SELECT first_name FROM mytable ORDER BY :sorting</sql></page>...<field id="firstName"> <sorting mapping="firstNameDirection">first_name :firstNameDirection</sorting></field>
#
<expression>Задаёт значение плейсхолдера :expression
, который можно использовать в теле <select>
, <filters>
, <sorting>
.
Тело
Значение плейсхолдера :expression
.
#
<join>Задаёт выражение для соединения с другими сущностями(таблицами), если это необходимо для этого поля.
Тело
Определяет с какими сущностями(таблицами) необходимо соединиться, чтобы получить поле.
Например, в случае SQL провайдера задаёт значение плейсхолдера :join
.
Пример
<field id="firstName"> <expression>t1.first_name</expression> <select mapping="fname">:expression as fname</select> <filters> <eq mapping="first_name">:expression = :first_name</eq> </filters> <sorting>:expression :direction</sorting> <join>table t1 on t1.id=t2.t1_id</join></field>