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

OSCHINA-MIRROR/HarmonyOS-tpc-RushOrm

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

RushOrm

RushOrm заменяет необходимость в SQL, сопоставляя классы Java с таблицами SQL.

Обзор

Для каких проектов подходит?

  • Проекты со сложными структурами данных.
  • Проекты, которые хотят реализовать хранение данных в базе данных за минимальное время.
  • Проекты, взаимодействующие с REST API.

Зачем был написан RushOrm?

  • Сложные взаимосвязи — RushObjects поддерживают списки других RushObjects.
  • Миграция без использования SQL.
  • Лёгкая расширяемость.
  • Отсутствие зависимостей.
  • Поддержка асинхронных вызовов.
  • Высокая скорость благодаря сложным вставкам и выборкам.
  • Поддержка импорта и экспорта данных в JSON и из него.
  • Уникальные идентификаторы для поддержки объединения баз данных.
  • Поддерживает разрешение конфликтов при импорте данных.

Хотя существует ряд других ORM, области, в которых многие из них, похоже, не дотягивают, — это поддержка отношений «один ко многим», миграция и расширения. Утверждая все те же основные функции, что и большинство других ORM, RushOrm поддерживает свойства «List» без необходимости добавления родительского объекта к его дочерним элементам. Он также обрабатывает миграцию структуры классов без каких-либо SQL-скриптов, требуемых разработчиком. Наконец, он разработан с пониманием того, что не каждую ситуацию можно предвидеть, поэтому вместо этого его можно легко настроить.

Демонстрация эффекта

Интеграция

Способ 1:
Через library сгенерировать har-пакет, добавить har-пакет в папку libs.
В entry gradle добавить следующий код:
implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])

Способ 2:
allprojects{
    repositories{
        mavenCentral()
    }
}
implementation 'io.openharmony.tpc.thirdlib:RushOrm_rushohos:1.0.6'

Требования для запуска entry

Через DevEco studio и скачивание SDK. Проект в build.gradle файл в dependencies → classpath версию изменить на соответствующую версию (то есть версию, используемую в вашем новом проекте IDE).

Пример

1.
public class Car extends RushObject {

    public String color;
    public Engine engine;

    public String anotherField;

    @RushList(classType = Wheel.class)
    public List<Wheel> wheels;

    public Car(){
        /* Empty constructor required */
    }

    public Car(String color, Engine engine){
        this.color = color;
        this.engine = engine;
    }
}


public class MainAbility extends Ability {
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setMainRoute(MainAbilitySlice.class.getName());
        List<Class<? extends Rush>> classes = new ArrayList<>();
        classes.add(Car.class);
        classes.add(Engine.class);
        classes.add(Wheel.class);
        OhosInitializeConfig ohosInitializeConfig = new OhosInitializeConfig(getApplicationContext(), classes);
        RushOhos.initialize(ohosInitializeConfig);
    }
}

2.
Button btnSave = (Button) findComponentById(ResourceTable.Id_btn_save);
Button btnSelect = (Button) findComponentById(ResourceTable.Id_btn_select);
Button btnDel = (Button) findComponentById(ResourceTable.Id_btn_del);
Text tvShow = (Text) findComponentById(ResourceTable.Id_text_show);
//сохранение
btnSave.setClickedListener(component -> {
    final long startTime = System.currentTimeMillis();
    final int numberToSave = 100;
    List<Car> cars = new ArrayList<>(numberToSave);
    for (int i = 0; i < numberToSave; i++) {
        Car car = new Car("Red", new Engine());
        car.wheels = new ArrayList<>();
        for (int j = 0; j < 4; j++) {
            car.wheels.add(new Wheel("Michelin"));
        }
        cars.add(car);
    }

    RushCore.getInstance().save(cars, () -> {
        long endTime = System.currentTimeMillis();
        final double saveTime = (endTime - startTime) / 1000.0;
        getAbility().getContext().getUITaskDispatcher().asyncDispatch(new Runnable() {
            @Override
            public void run() {
                tvShow.setText("Сохранение успешно! Общее затраченное время:"+String.format("%1$,.2f s", saveTime));
            }
``` ```
});
            });
        });
        //查询
        btnSelect.setClickedListener(component -> {
            new Thread(() -> {
                List<Car> cars = new RushSearch().find(Car.class);
                getAbility().getContext().getUITaskDispatcher().asyncDispatch(new Runnable() {
                    @Override
                    public void run() {
                        LogUtil.error("test", "Rush main select complete====");
                        tvShow.setText("查询成功:" + JSON.toJSONString(cars));
                    }
                });
            }).start();
        });
        //删除
        btnDel.setClickedListener(component -> new Thread(() -> {
            RushCore.getInstance().deleteAll(Car.class);
            RushCore.getInstance().deleteAll(Engine.class);
            RushCore.getInstance().deleteAll(Wheel.class);
            getAbility().getContext().getUITaskDispatcher().asyncDispatch(new Runnable() {
                @Override
                public void run() {
                    tvShow.setText("删除成功");
                }
            });
        }).start());

Лицензировано согласно Apache License, Version 2.0

Авторские права (C) 2015 Стюарт Кэмпбелл.

Лицензировано в соответствии с лицензией Apache, версия 2.0 («Лицензия»); вы не можете использовать этот файл, кроме как в соответствии с Лицензией. Вы можете получить копию Лицензии по адресу:

http://www.apache.org/licenses/LICENSE-2.0

Если это не требуется применимым законодательством или не согласовано в письменной форме, программное обеспечение, распространяемое в соответствии с настоящей Лицензией, распространяется на условиях «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ ИЛИ УСЛОВИЙ ЛЮБОГО РОДА, явных или подразумеваемых. См. Лицензию для конкретного языка, регулирующего разрешения и ограничения в рамках Лицензии.

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

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

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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