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

OSCHINA-MIRROR/automvc-bee

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Bee

Легко для сильных.

Bee — это ORM-фреймворк.

Bee представляет собой простой и высокоэффективный ORM-фреймворк. Сложность кодирования O(1), это означает, что Bee сделает Dao за вас. Вам больше не нужно писать Dao самостоятельно. Это поможет вам сосредоточиться на разработке бизнес-логики.

Хорошая особенность: ИИ, экономия времени/вкуса, простота, автоматизация (стиль AiTeaSoft).

Хорошие новости: Новейшая версия: Bee V2.4.0 LTS.

Цель сегментирования: в основном прозрачна для разработки и кодирования, с небольшой конфигурацией сегментирования. Быстрый старт: лучший пример сегментирования

Смотрите Bee: https://github.com/automvc/bee bee-ext: https://github.com/automvc/bee-ext

中文介绍

Нажмите на ссылку, чтобы просмотреть введение на китайском языке.

Требования

Bee jdk1.8+

Особенности и функции:

Простота использования:

    1. Простой интерфейс, удобный в использовании. Интерфейс Suid предоставляет четыре метода объектно-ориентированного программирования, соответствующие операциям SQL-языка select, update, insert и delete.
    1. Используя Bee, вам больше не нужно писать отдельный код DAO. Вы можете напрямую вызывать API Bee для выполнения операций с базой данных.
    1. Конвенция над конфигурацией: Javabean может без аннотации, без xml.
    1. Интеллектуальная автоматическая фильтрация нулевых и пустых строковых свойств в сущностях устраняет необходимость написания кода для проверки ненулевых значений.
    1. Легко реализовать запросы частичных полей и нумерацию страниц собственных операторов.
    1. Поддерживает возврат результатов запроса в формате JSON; поддерживает цепочку.
    1. Поддерживает сегментирование, как базы данных, так и таблицы; сегментирование только базы данных; сегментирование только таблицы; разделение чтения и записи. Эта функция прозрачна для существующего кода и не требует дополнительного кодирования.
    1. Легко расширяемый с поддержкой нескольких баз данных (MySQL, MariaDB, Oracle, H2, SQLite, PostgreSQL, SQL Server, Access, Kingbase, Dameng и т. д.) и теоретически поддерживает любую базу данных, поддерживаемую JDBC. Кроме того, поддерживает Android и Harmony.
    1. Дополнительная поддержка разбиения на страницы базы данных для: MsAccess, Cubrid, HSQL, Derby, Firebird и т.д.
    1. Можно одновременно использовать несколько баз данных (например, MySQL, Oracle, SQL Server).

Автоматически, мощно:

    1. Динамическая/произвольная комбинация условий запроса без необходимости заранее готовить интерфейсы DAO. Новые требования к запросам можно обрабатывать без изменения или добавления интерфейсов.
    1. Поддерживает транзакции, используя одно и то же соединение для нескольких операций ORM, FOR UPDATE, пакетной обработки, выполнения собственных SQL-операторов и хранимых процедур.
    1. Поддерживает объектно-ориентированные сложные запросы, многотабличные запросы (без проблемы N+1) и поддерживает отношения один к одному, один ко многим, многие к одному и многие ко многим. Структура результата может различаться в зависимости от того, использует ли подтаблица List; обновление, вставка и удаление ассоциаций между несколькими таблицами (2.1.8).
    1. MongoDB ORM и поддержка сегментирования MongoDB.
    1. Поддерживает регистрацию, перехватчики, мультиарендность и пользовательские TypeHandlers для обработки результатов ResultSet в запросах. SetParaTypeConvert преобразует типы параметров PreparedStatement.
    1. Пользовательские динамические теги SQL, такие как @in, @toIsNULL1, @toIsNULL2, , . Позволяет динамический SQL, преобразование списков в операторы типа in (1,2,3) без необходимости циклов foreach. Пакетная вставка также не требует foreach.
    1. Сложный запрос может быть автоматически проанализирован фронтендом и бэкендом.
    1. Кэш L1, простой по концепции и мощный по функциям; кэш L1 также может быть точно настроен, как JVM; Поддержка обновляемого долгосрочного списка кэша и обновления конфигурации таблицы без перезапуска. По своей сути устойчив к проникновению в кэш. Поддержка расширения кэша L2; поддержка кэша Redis L2.
    1. Никаких сторонних зависимостей плагинов; можно использовать с нулевой конфигурацией.
    1. Высокая производительность: близка к скорости JDBC; небольшой размер файла: Bee V1.17 всего 502 КБ, V2.1 всего 827 КБ. Вспомогательная функция:
    1. Дополнительные функции: 21. Обеспечивает простое решение для создания распределённых первичных ключей: генерирует уникальные, монотонно возрастающие (в пределах идентификатора рабочего процесса) числовые идентификаторы в распределённой среде.
    1. Поддерживает автоматическую генерацию Javabean, соответствующего таблицам (поддерживает Swagger), создание таблиц на основе Javabean и автоматическое генерирование бэкенд-кода Javaweb на основе шаблонов. Может печатать исполняемые SQL-запросы без заполнителей для упрощения отладки. Поддерживает генерацию SQL-скриптов в формате JSON.
    1. Поддерживает чтение файлов Excel и импорт данных в базу данных; простые операции. Поддерживает создание таблиц базы данных на основе конфигураций Excel.
    1. Класс инструмента потока StreamUtil; преобразование даты DateUtil, определение формата даты, вычисление возраста.
    1. Богатая поддержка аннотаций: PrimaryKey, Column, Datetime, Createtime, Updatetime; JustFetch, ReplaceInto (MySQL), Dict, DictI18n, GridFs и т. д.
    1. Используйте имя сущности _F (автоматически сгенерированное) для ссылки на имена полей сущности, например, Users_F.name или в интерфейсе SuidRichExt, используя формат Users::getName.

Новейшая основная функция

V2.4.0

  1. Поддержка программирования SQL с использованием заполнителей для предотвращения атак внедрения.

  2. Не кэшировать, если не указано имя таблицы.

  3. Добавить реализацию по умолчанию для расчёта даты и добавить пример пользовательской реализации сегментирования.

  4. Поддержка ORM-запросов ElasticSearch (7.x).

  5. Поддержка PreparedSql для улучшения относительного кэша.

  6. Поддержка генерации Javabean для MongoDB с комментариями.

  7. В классе шаблона метода сегментирования используется finally для обработки повторного использования контекста.

  8. MapSql (MapSuid) поддерживает использование Condition для реализации более сложных условий where и обновления значений с помощью updateSet.

  9. Добавить методы: public void where(Condition condition); public void updateSet(Condition condition).

  10. Добавить ChainSqlFactory.

  11. Добавить сборщик результатов выбора.

  12. Добавить методы MoreTable: selectWithFun, count.

  13. Добавить метод MoreTable List<String[]> selectString(T entity, Condition condition).

  14. Улучшить обновление MoreTable.

  15. Поддержка конфигурации сегментирования в стиле свойств.

  16. Поддержка MoreTable selectJson.

  17. Поддержка GenBean java.time.LocalDateTime.

  18. Исправлена ошибка: базовое значение GenConfig по умолчанию поддерживает Linux env.

  19. Поддержка Suid java.time.LocalDateTime типа.

  20. TO_DATE для Oracle фильтрует запись в SQL, где часть.

  21. Исправлена ошибка: при однократной вставке MoreTable автоматически устанавливается значение перед doBeforePasreEntity. InsertAndReturnId в режиме сегментирования необходимо установить InitIdByAuto > doBeforePasreEntity. InsertAndReturnId: переданный pkName должен быть преобразован в имя столбца.

  22. Улучшение: При вставке нескольких таблиц, если нет дочерних таблиц, используется вставка основной таблицы. В генерации файлов добавлена функция резервного копирования существующих файлов. TranHandler выбрасывает полученное исключение на верхний уровень.

  23. Поддержка pgsql json/jsonb, но в части where требуется написать специальный SQL pgsql.

  24. Улучшена функция сегментирования.

Подробная информация о функциях

нажмите для: Подробная информация о функциях

Bee поддерживает следующие базы данных:

  1. MySQL.
  2. Oracle.
  3. SQL Server.
  4. MariaDB.
  5. H2.
  6. SQLite.
  7. PostgreSQL.
  8. MS Access.
  9. Kingbase.
  10. DM.
  11. OceanBase.
  12. Cubrid, HSQL, Derby, Firebird.
  13. Другие БД, поддерживающие JDBC.

NoSQL: 14. MongoDB. 15. ElasticSearch. 16. Cassandra.

Мобильная среда (база данных): 17. Android. 18. Harmony.

Сравнение ORM

Сравнение в JDBC

Сравнение ORM (более подробно)

Тестовая среда: локальные окна. БД: MySQL (версия 5.6.24). Тестовый пункт: пакетная вставка; выборка страниц; транзакция (обновление и выбор). Быстрый старт: Bee

  1. Добавьте Bee. 1.1 Если это проект Maven, добавьте следующую зависимость:
       <dependency>
          <groupId>org.teasoft</groupId>
          <artifactId>bee-all</artifactId>
          <version>2.4.0</version>
        </dependency>

        <!-- Mysql config. Вы должны изменить его на реальную конфигурацию базы данных. -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
            <scope>runtime</scope>
        </dependency>

Gradle:

implementation group: 'org.teasoft', name: 'bee-all', version: '2.4.0'
// Gradle (Short)
implementation 'org.teasoft:bee-all:2.4.0'

1.2 Конечно, вы можете скачать файл jar напрямую.

  1. Создайте базу данных и таблицу. Например: создайте одну базу данных, по умолчанию имя — bee. Создайте таблицы и инициализируйте данные, запустив файл init-data(user-orders)-mysql.sql (это скрипт MySQL SQL).

  2. Обновите конфигурацию базы данных в файле bee.properties, если необходимо. Если файла bee.properties нет, вы можете создать его самостоятельно.

#bee.databaseName=MySQL bee.db.dbName=MySQL bee.db.driverName = com.mysql.jdbc.Driver #bee.db.url =jdbc:mysql://localhost:3306/bee?characterEncoding=UTF-8 bee.db.url =jdbc:mysql://127.0.0.1:3306/bee?characterEncoding=UTF-8&useSSL=false bee.db.username = root bee.db.password =

#print log bee.osql.showSQL=true bee.osql.showSql.showType=true bee.osql.showSql.showExecutableSql=true # с версии 2.1.7 sqlFormat=true будет форматировать исполняемый SQL bee.osql.showSql.sqlFormat=false

#log4j>slf4j>log4j2>androidLog>harmonyLog>systemLogger>fileLogger>noLogging>jdkLog>commonsLog bee.osql.loggerType=systemLogger

  1. Используйте Javabean Orders, как показано ниже: Orders(Javabean) Auto Genernate Javabean

  2. Запустите следующий код Java:

import java.math.BigDecimal;
import java.util.List;

import org.teasoft.bee.osql.BeeException;
import org.teasoft.honey.osql.core.BeeFactoryHelper;
import org.teasoft.honey.osql.core.Logger;

/**
 * @author Kingstar
 * @since 1.0
 */
public class SuidExamEN {

    public static void main(String[] args) {

        try {
            Suid suid = BeeFactoryHelper.getSuid();

            Orders orders1 = new Orders(); // need gen the Javabean
            orders1.setId(100001L);
            orders1.setName("Bee(ORM Framework)");

            List<Orders> list1 = suid.select(orders1); // 1. select
            for (int i = 0; i < list1.size(); i++) {
                Logger.info(list1.get(i).toString());
            }

            orders1.setName("Bee(ORM Framework)");
            int updateNum = suid.update(orders1); //2. update
            Logger.info("update record:" + updateNum);

            Orders orders2 = new Orders();
            orders2.setUserid("bee");
            orders2.setName("Bee(ORM Framework)");
            orders2.setTotal(new BigDecimal("91.99"));
            orders2.setRemark(""); // empty String test

            int insertNum = suid.insert(orders2); // 3. insert
            Logger.info("insert record:" + insertNum);

            int deleteNum = suid.delete(orders2); // 4. delete
            Logger.info("delete record:" + deleteNum);
        } catch (BeeException e) {
            Logger.error("In SuidExamEN (BeeException):" + e.getMessage());
            //e.printStackTrace();
        } catch (Exception e) {
            Logger.error("In SuidExamEN (Exception):" + e.getMessage());
            //e.printStackTrace();
        }
    }
}
// notice: this is just a simple sample. Bee suport transaction,paging,complicate select,slect json,and so on.
``` **Быстрый старт: Bee + Android**

## Использование Bee в среде Android  
### 1. bee.properties  
```properties
bee.db.isAndroid=true
bee.db.androidDbName=account.db
bee.db.androidDbVersion=1
bee.osql.loggerType=androidLog
# включить преобразование типа поля результата запроса, и будет поддерживаться больше типов
bee.osql.openFieldTypeHandler=true

# Если вам разрешено удалять и обновлять всю таблицу, вам нужно удалить комментарии
#bee.osql.notDeleteWholeRecords=false
#bee.osql.notUpdateWholeRecords=false

2. Реализуйте таблицы, которые необходимо создать и обновить при установке приложения и обновлении

public class YourAppCreateAndUpgrade implements CreateAndUpgrade {
    @Override
    public void onCreate() {
        // Вы можете создавать таблицы объектно-ориентированным способом
        Ddl.createTable(new Orders(), false);
        Ddl.createTable(new TestUser(), false);
    }

    @Override
    public void onUpgrade(int oldVersion, int newVersion) {
        if (newVersion == 2) {
            Ddl.createTable(new LeafAlloc(), true);
            Log.i("onUpgrade", "Ты в ситуации без удаления, онлайн обновление до версии:" + newVersion);
        }
    }
}

3. Зарегистрируйте YourAppCreateAndUpgrade и контекст Android в Bee

Настройте android:name на BeeApplication в файле AndroidManifest.xml.

package com.aiteasoft.util;

import org.teasoft.bee.android.CreateAndUpgradeRegistry;
import org.teasoft.beex.android.ApplicationRegistry;

public class BeeApplication extends Application {
    private static Context context;
    @Override
    public void onCreate() {
       ApplicationRegistry.register(this);//зарегистрировать контекст
       CreateAndUpgradeRegistry.register(YourAppCreateAndUpgrade.class);
     }
 }
 
// И в AndroidManifest.xml, настроить android:name как BeeApplication  
<application
        android:icon="@drawable/appicon"
        android:label="@string/app_name"
         android:name="com.aiteasoft.util.BeeApplication"
       >

4. Работа с базой данных SQLite в Java аналогична работе с JavaWeb

Suid suid = BF.getSuid();
List<Orders> list = suid.select(new Orders());

5. Приложение Bee в App Compare

Сравнение производительности приложения Bee в разработке приложений
Работа с 10 000 записями, сравнение времени использования следующее.

Работа с 10000 записей (единица измерения: мс)
  вставка запрос удаление
greenDao (Android) 104666 600 47
Bee (Android 8.1) 747 184 25
Bee (HarmonyOS P40 Pro симулятор) 339 143 2

Больше примеров/тестовых случаев

Bee+Spring-boot Demo

Архитектура Bee

V2.1

Общий интерфейс Bee

Быстрая разработка приложений:

Пусть Java программирует быстрее, чем php и Rails.

Более быстрая разработка новых комбинаций для Java Web:
Bee+Spring+SpringMVC

Более быстрая разработка новых комбинаций для микросервисов Spring Cloud:
Bee + Spring Boot

KmCoding

Платформа генерации кода для быстрого создания приложений (https://www.kmcoding.com) — сделано в Китае компанией AiTea Soft!

Генерировать код автоматически

...

Демонстрация приложения: Демонстрация приложения HarmonyOS с ORM Bee:

Bee + HarmonyOS

Bee + Android

Другие документы:

API-DOC
В исходном коде API-V1.17 (новейшая версия) содержатся версии bee-1.17 на китайском и английском языках, исходный код bee-1..17 на китайском языке.

Документ wiki

CSDN: документ ORM Bee

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

Использование Enterprise Edition, профессиональная техническая поддержка и консультации по решениям предоставляются следующими компаниями:

Шэньчжэньская компания программного обеспечения «Кайфэн»
(предприятия, желающие присоединиться, пожалуйста, свяжитесь с нами!)

Контакты и приветствия:

Электронная почта автора: honeysoft@126.com

Если у вас есть какие-либо проблемы с bee, пожалуйста, дайте мне знать! Большое спасибо!

Группа ORM QQ: 992650213 WeChat:AiTeaSoft

В то же время приглашаем вас присоединиться к команде Bee, чтобы создать лучшее будущее.

Комментарии ( 0 )

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

Введение

Bee — Java ORM-фреймворк для новой эры интернета, поддерживает шардинг. Работает с JDBC, Android и HarmonyOS. Поддерживает различные реляционные базы данных, а также NoSQL, например Cassandra и MongoDB. Быстрее, проще, автоматичнее! Ускоряет разработку и выполнение, умнее! Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/automvc-bee.git
git@api.gitlife.ru:oschina-mirror/automvc-bee.git
oschina-mirror
automvc-bee
automvc-bee
master