Skip to main content

Провайдеры данных

Стандартные провайдеры#

Библиотека компонентов

http://n2oapp.net/framework/config/schema/data-provider-1.0

<sql>#

Вызов SQL запросов.

Атрибуты

НаименованиеТипОписаниеЗначение по умолчанию
data-sourceСтрокаJndi имя jdbc источника данныхОсновной DataSource приложения
fileСтрокаПуть к файлу .sql в ресурсах проекта
row-mappermap, indexСпособ получения значений из jdbc в запросах sqlmap
connection-urlСтрокаURL подключения к базе данных
usernameСтрокаИмя пользователя
passwordСтрокаПароль
driver-class-nameСтрокаJDBC драйвер

Тело

SQL запрос.

note

В запросе могут быть использованы плейсхолдеры через "двоеточие".

Пример

<sql>UPDATE mytable SET :params WHERE id = :id;</sql>
note

Плейсхолдер :params собирается по телу входящих параметров операции.

SQL запрос для <query>
<query>  <list>    <sql>      SELECT :select      FROM mytable :join      WHERE :filters      ORDER BY :sorting      OFFSET :offset      LIMIT :limit    </sql>  </list></query>
note

Плейсхолдеры :select, :filters, :sorting, :join, :limit, :offset собираются по критериям выборки.

<mongodb>#

Вызов запросов к MongoDb.

Атрибуты

НаименованиеТипОписаниеЗначение по умолчанию
connection-urlСтрокаАдрес подключения
database-nameСтрокаИмя базы данных
collection-nameСтрокаИмя коллекции документов
operationfind insertOne updateOne deleteOne deleteMany countDocumentsОперация, выполняемая провайдером
Запрос к MongoDb для <query>
<query>  <list>    <mongodb connection-url="mongodb:/testurl"           database-name="dbName"           collection-name="user"           operation="find"/>  </list></query>

<rest>#

Вызов REST запросов.

Атрибуты

НаименованиеТипОписаниеЗначение по умолчанию
methodget, post, put, deleteHttp метод запросаget
filters-separatorСтрокаРазделитель между фильтрами&
sorting-separatorСтрокаРазделитель между сортировками&
select-separatorСтрокаРазделитель между столбцами&
join-separatorСтрокаРазделитель между присоединёнными таблицами&
content-typeСтрокаТип контентаapplication/json
proxy-hostСтрокаАдрес прокси
proxy-portСтрокаПорт прокси

Тело

Запрос REST

note

В запросе могут быть использованы плейсхолдеры в фигурных скобках.

Пример

<rest method="put">  /myservice/myentity/{id}</rest>
REST запрос для <query>
<query>  <list result-mapping="content" count-mapping="totalElements">    <rest method="get" filters-separator=";">/myservice/myentity/findAll;{filters}?{sortings}&amp;offset={offset};&amp;limit={limit}    </rest>  </list></query>
Результат REST запроса для <query>
{  "content" : [{}, {}, ...],  "totalElements" : 100500}
note

Плейсхолдеры {select}, {filters}, {sorting}, {join}, {limit}, {offset}, {page} собираются по критериям выборки.

<java>#

Вызов java методов.

note

Если не указан IoC контейнер (Spring, EJB), то будет вызов static метода.

Атрибуты

НаименованиеТипОписаниеЗначение по умолчанию
classСтрокаПолное имя java классаИз атрибута service-class в объекте
methodСтрокаИмя java метода

Пример

<java  class="com.example.MyService"  method="calcSum">  <arguments>      <argument name="a" type="primitive"/>      <argument name="b" type="primitive"/>  </arguments>  <spring/></java>
Java класс с методом calcSum
package com.example;
public class MyService {    public static int calcSum(int a, int b) {      return a + b;    }}
Вызов java метода для <query>
<query>  <list count-mapping="count" result-mapping="list">    <java      class="com.example.MyService"      method="getList">      <arguments>        <argument          type="criteria"          class="com.example.MyCriteria"/>      </arguments>    </java>  </list></query>
Java класс с методом getList
package com.example;
public class MyService {    public static List<MyEntity> getList(MyCriteria filters) {      ...    }}
note

Фильтры, сортировки, паджинация и другие параметры выборки устанавливаются в объект типа criteria. Поддерживаются интерфейсы org.springframework.data.domain.Pageable, org.springframework.data.domain.Sort, org.springframework.data.domain.Example, net.n2oapp.criteria.api.Criteria.

<arguments>#

Аргументы метода.

note

Порядок следования XML элементов соответствует порядку следования аргументов метода.

<argument>#

Аргумент метода.

Атрибуты

НаименованиеТипОписаниеЗначение по умолчанию
nameСтрокаНаименование аргумента метода
typeprimitive, class, entity, criteriaТип аргумента
classСтрокаПолное имя java класса аргументаДля type="primitive" определяется автоматически. Для type="entity" определяется по атрибуту entity-class объекта.
default-valueСтрокаЗначение по умолчанию
<spring>#

Вызов Spring бинов.

Атрибуты

НаименованиеТипОписаниеЗначение по умолчанию
beanСтрокаИдентификатор Spring бинаЕсли не задан bean, то будет поиск по class.

Пример

<java method="calc">  <spring bean="calculator"/></java>
<ejb>#

Вызов EJB бинов.

Подключение

<dependency>  <groupId>net.n2oapp.framework</groupId>  <artifactId>n2o-spring-boot-starter</artifactId>  <version>${n2o.version}</version></dependency>

Атрибуты

НаименованиеТипОписаниеЗначение по умолчанию
beanСтрокаИдентификатор EJB бина
protocolСтрокаПротокол URI
applicationСтрокаИмя ear приложения
moduleСтрокаИмя ejb модуля
distinctСтрокаИмя участка
statefulltrue / falseС состоянием или безfalse
uriСтрокаАдрес remote бинаСоставляется из protocol, application, module, distinct, bean, statefull.

Пример

<java class="com.example.MyClass" method="mycall">  <ejb    protocol="ejb"    application="myapp"    module="mymodule"    bean="mybean"/></java>

JPA#

<find>#

<persist>#

<merge>#

<remove>#

<query>#

Spring Data#

Вызов Spring Data сервисов.

Подключение

<dependency>  <groupId>net.n2oapp.framework</groupId>  <artifactId>n2o-engine-spring</artifactId>  <version>${n2o.version}</version></dependency>

Библиотека компонентов

http://n2oapp.net/framework/config/schema/spring-data-1.0
note

Поддерживаются интерфейсы CrudRepository, PagingAndSortingRepository, JpaRepository, QueryByExampleExecutor, JpaSpecificationExecutor, QueryDslPredicateExecutor.

Пример

<find-all  service-class="com.example.MyService"  entity-class="com.example.MyEntity"  executor="specification"/>
Spring Data сервис
public interface MyService extends JpaRepository<MyEntity>, JpaSpecificationExecutor {  //метод findAll в JpaSpecificationExecutor}

Базовые свойства#

Атрибуты

НаименованиеТипОписаниеЗначение по умолчанию
service-classСтрокаКласс сервисаИз атрибута service-class в объекте
entity-classСтрокаКласс целевой сущностиИз атрибута entity-class в объекте
beanСтрокаИдентификатор Spring бинаПоиск бина по классу.
executorexample, specification, querydslСпособ задания критериев запросаЕсли не задан, то поиск без критериев.
<arguments>#

Аргументы метода. Аналогично аргументам java провайдера.

<find-one>#

Поиск одного элемента по идентификатору или критериям.

Пример

<find-one  service-class="com.example.MyService"  entity-class="com.example.MyEntity"/>
Spring Data сервис
public interface MyService extends JpaRepository<MyEntity> {  //метод findOne в JpaRepository}

<find-all>#

Поиск списка (List, Slice, Page) элементов по критериям.

Пример

<find-all  service-class="com.example.MyService"  entity-class="com.example.MyEntity"  executor="example"/>
Spring Data сервис поиска по Example
public interface MyService extends JpaRepository<MyEntity>, QueryByExampleExecutor {  //метод findAll в QueryByExampleExecutor}

<find-by>#

Поиск списка (List, Slice, Page) элементов или одного элемента по не стандартным методам.

Атрибуты

НаименованиеТипОписаниеЗначение по умолчанию
methodСтрокаПолное название метода Spring Data сервиса

Пример

<find-by method="findByLastname"  service-class="com.example.PersonRepository"  entity-class="com.example.Person">  <arguments>    <argument name="lastname" type="primitive"/>  </arguments></find-by>
Spring Data сервис поиска по Lastname
public interface PersonRepository extends Repository<Person, Long> {  List<Person> findByLastname(String lastname);}

<count>#

Подсчёт количества записей по критериям.

<exists>#

Определение существования записи по идентификатору или критериям.

<save>#

Создание или изменение записи.

<delete>#

Удаление одной записи по идентификатору или критериям.

<delete-all>#

Удаление списка записей по критериям.

<invoke>#

Вызов произвольного метода.

Атрибуты

НаименованиеТипОписаниеЗначение по умолчанию
methodСтрокаПолное название метода Spring Data сервиса

Пример

<invoke method="close"  service-class="com.example.MyService">  <arguments>    <argument name="id" type="primitive"/>  </arguments></invoke>
Spring Data сервис с методом close
public interface MyService extends Repository<MyEntity, Long> {  void close(Long id);}