1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/rexsoft-rexdb

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 12 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 01.12.2024 03:48 cc16014

Рексдб: открытый фреймворк для работы с данными

Рексдб — это открытый фреймворк, написанный на Java. Он предоставляет функции для работы с базами данных, такие как запросы, обновления, пакетная обработка, вызовы и транзакции. Рексдб может заменить Mybatis и Hibernate в качестве основного ORM-фреймворка системы.

Основные характеристики:

  • высокая производительность;
  • простой в использовании интерфейс в стиле инструментальных классов;
  • не требует настройки (кроме конфигурации источника данных и глобальных настроек).

Функции:

  • операции с базой данных: запросы, обновления, пакетная обработка, вызовы, транзакции;
  • отображение ORM: поддержка массивов, карт и любых объектов Java;
  • управление источниками данных: встроенный пул соединений, поддержка сторонних источников данных и JNDI;
  • диалект: автоматическая разбивка на страницы, поддержка Oracle, DB2, SQL Server, MySQL, Dameng и других баз данных;
  • расширенные функции: мониторинг, интернационализация, управление исключениями и другие.

Техническая поддержка:

Хотя рексдб обновляется медленно, каждая выпущенная версия была успешно протестирована в различных производственных средах, включая корпоративные, правительственные и финансовые системы. Это обеспечивает стабильность продукта. Однако, поскольку рексдб является бесплатным программным обеспечением с открытым исходным кодом, кроме документации, исходного кода и примеров, он не предоставляет ежедневную техническую поддержку.

Рексдб использует лицензию Apache 2.0, что позволяет использовать его бесплатно для личных или коммерческих целей.

Для получения дополнительной информации о рексдб посетите официальный сайт проекта.

Примечание: в тексте запроса присутствуют фрагменты кода, которые были переведены без изменений. DB.getMapList

*Пример 3:* Выполнение SQL с предкомпилированными параметрами, когда параметр parameter имеет тип *java.util.Map* или *Java-объект*, в SQL используется маркер предкомпиляции `#{}`.

    ```
    // map — экземпляр типа java.util.Map, содержит ключ с именем «class»;
    // obj — обычный Java-объект, содержит член класса с именем «clazz»
    List<RMap> list = DB.getMapList("select * from t_student where class=#{clazz}", map);
    List<RMap> list = DB.getMapList("select * from t_student where class=#{clazz}", obj);
    ```

*Пример 4:* Выполнение постраничного запроса, запрос записей с 100 по 110.

    ```
    List<RMap> list = DB.getMapList("select * from t_student where class='3年1班'", 100, 10);
    ```

*Пример 5:* Выполнение SQL в указанном источнике данных.

    В конфигурационном файле *rexdb.xml* есть источник данных с идентификатором *student*.

    ```
    List<RMap> list = DB.getMapList("student", "select * from t_student where class='3年1班'");
    ```

DB.update()

Используется для выполнения операций вставки, обновления и удаления. Метод возвращает количество затронутых строк. Формат:

    > **int DB.update([String dataSourceId,] String sql [, Object[] | Ps | Map | Object parameter])**

*Пример 1:* Выполнение SQL.

    ```
    DB.update("delete from t_student where num = 1");
    ```

*Пример 2:* Выполнение SQL с предкомпилированными параметрами, когда параметр parameter имеет тип *Object-массив* или *org.rex.db.Ps*. В SQL используется маркер предкомпиляции `?`.

    ```
    string sql = "insert into t_student(num, student_name, student_class,create_time) values (?, ?, ?, ?)";
    DB.update(sql, new Object[]{1, "钟小强","3年1班", new Date()});
    DB.update(sql, new Ps(2, "王小五", "3年1班",new Date()));
    ```

*Пример 3:* Выполнение SQL с предкомпилированными параметрами, когда параметр parameter имеет тип *java.util.Map* или *Java-объект*. В SQL используется маркер предкомпиляции `#{}`.

    ```
    String sql = "update t_student set student_name = #{studentName} where num = #{num}";
    DB.update(sql,map);// map — экземпляр типа java.util.Map, содержит ключи с именами «studentName» и «num»
    DB.update(sql,new Students(1, "钟小强", null, null));//obj — обычный Java-объект, содержит члены класса с именами «studentName» и «num».
    ```

*Пример 4:* Выполнение SQL в указанном источнике данных.

    В конфигурационном файле *rexdb.xml* есть источник данных с идентификатором *student*.

    ```
    List<RMap> list = DB.getMapList("student", "delete from t_student where num = 1");
    ```

DB.batchUpdate()

Метод используется для выполнения пакетных операций. Он может повысить производительность при выполнении большого количества изменений данных. Формат:

    > **int[] DB.batchUpdate([String datasource,] String[] sqls)**
    > **int[] DB.batchUpdate([String datasource,] String sql, Object[][] | Ps[] | Map[] | Object[] | List parameter )**

*Пример 1:* Выполнение нескольких SQL.

    ```
    String[] sqls = new String[]{"delete from t_student where num=1", "delete from t_student where num=2"};
    DB.batchUpdate(sqls);
    ```

*Пример 2:* Выполнение SQL с предкомпилированными параметрами, когда элемент параметра parameter имеет тип *Object-массив* или *org.rex.db.Ps*. В SQL используется маркер предкомпиляции `?`.

    ```
    string sql = "insert into t_student(num, student_name, student_class,create_time) values (?, ?, ?, ?)";
    DB.batchUpdate(sql, new Object[][]{{1, "钟小强","3年1班", new Date()}, {2, "王小五","3年1班", new Date()}});
    DB.batchUpdate(sql, new Ps[]{new Ps(3, "李小华", "3年1班", new Date()), new Ps(4, "赵小明", "3年1班", new Date())});  
    ```

*Пример 3:* Выполнение SQL с предкомпилированными параметрами, когда элемент параметра parameter имеет тип *java.util.Map* или *Java-объект*. В SQL используется маркер предкомпиляции `#{}`.

    ```
    String sql = "update t_student set student_name = #{studentName} where num = #{num}";
    DB.batchUpdate(sql, maps);//maps — массив экземпляров типа java.util.Map. Каждый элемент массива содержит ключи с именами «studentName» и «num».
    DB.batchUpdate(sql, objs);//objs — массив объектов типа Student. Объект Student содержит члены класса с именами «studentName» и «num».
    ```

*Пример 4:* Выполнение SQL в указанном источнике данных.

    В конфигурационном файле *rexdb.xml* есть источник данных с идентификатором *student*.

    ```
    String[] sqls = new String[]{"delete from t_student where num=1", "delete from t_student where num=2"};
    DB.batchUpdate("student", sqls);    
    ```

Транзакции

Rexdb использует программный подход к обработке транзакций. Следующие методы используются для обработки транзакций:

    > **void DB.beginTransaction([String dataSourceId] [,DefaultDefinition definition])** // начать транзакцию
    > **void DB.commit([String dataSourceId])** // зафиксировать транзакцию
    > **void DB.rollback([String dataSourceId])** // откатить транзакцию

JTA-транзакции используют следующие методы:

    > **void DB.beginJta([DefaultDefinition definition])** // начать JTA-транзакцию
    > **void DB.commitJta()** // зафиксировать JTA-транзакцию
    > **void DB.rollbackJta()** // откатить JTA-транзакцию

Пример:

    ```
    DB.beginTransaction();
    try{
        DB.update("delete from t_student where num = 1");
        DB.update("delete from t_student where num = 2");
        UserDao.update();//Rexdb-транзакция является потоковой, поэтому она разделяется на несколько DAO в одном потоке и в одном источнике данных
        DB.commit();
    }catch(Exception e){
        DB.rollback();
    }
    ```

Вызов DB.call()

Этот метод используется для выполнения вызовов. Его можно использовать для вызова хранимых процедур и функций. Поддерживает входные, выходные параметры и возвращаемые значения. Формат:

    > **RMap DB.call([String dataSourceId,] String sql [, Object[] | Ps | Map | Object parameter])**

*Пример 1:* Вызов хранимой процедуры/функции.

    ```
    DB.call("test_proc()");
    ```

*Пример 2:* Вызов хранимой процедуры/функции с входным параметром.

    ```
    DB.call("{call test_proc_in(?)}", new Ps(200));
    ```

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/rexsoft-rexdb.git
git@api.gitlife.ru:oschina-mirror/rexsoft-rexdb.git
oschina-mirror
rexsoft-rexdb
rexsoft-rexdb
master