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

OSCHINA-MIRROR/xuejike-lambda-query

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

Lambda-query 1.0 версия

Maven Central

Введение

LambdaQuery будет поддерживать запросы к различным источникам данных и обеспечивать унифицированный доступ к простым данным в Java.

Функциональное планирование

Общее функциональное планирование

  • Реализация базовых функций запросов.
  • Реализация LoadRef, позволяющая выполнять объединение данных таблиц с помощью selectIn и обеспечивающая поддержку распределённых баз данных и баз данных между различными службами.
  • Добавление функции redisCache для настройки использования кэша при загрузке через конфигурацию при использовании LoadRef.

1. MongoDB

  • Реализованы базовые функции Lambda-запросов (завершено).
  • Реализованы основные операции, такие как добавление, удаление и обновление.
  • Добавлена функция LoadJoin, которая позволяет объединять данные таблиц с использованием selectIn.

2. mybatis-plus

  • Интеграция с интерфейсом запросов mybatis-plus (завершена).
  • Интеграция основных операций обновления, удаления и добавления mybatis-plus.
  • Добавлена функция LoadJoin для объединения данных таблиц с использованием selectIn.
  • Добавлена функция Cache, использующая Redis для кэширования данных, что позволяет избежать прямого доступа к базе данных при объединении данных.
  • Добавлен интерфейс Map для решения проблем с объединением данных после использования selectIn.

3. HttpServer&HttpClient

  • Добавлено использование HTTP для связи между микросервисами и отображения связанных данных.
  • Расширены все функции запросов для обеспечения взаимодействия между микросервисами через HTTP.
  • Расширены возможности пользовательских полей запросов и результатов HTTP, позволяя гибко использовать пустые значения в запросах и условиях.
  • Добавлены перехватчики для глобального перехвата запросов на обновление, добавление и удаление, обеспечивая возможность реализации ограничений доступа и разрешений для микросервисов.

Поддержка функций

Базовые условия запроса

  • Равно: eq.
  • Не равно: ne.
  • Пустое значение: isNull.
  • Больше: gt.
  • Больше или равно: gte.
  • Меньше: lt.
  • Меньше или равно: lte.
  • Содержит: in.
  • Не содержит: notIn.
  • Между: between.

Результаты запроса

  • Запрос по ID.
  • Список запросов.
  • Запросы с разбивкой на страницы.
  • Подсчёт запросов.

Использование

Зависимости

  1. Автоконфигурация SpringBoot:
<!--Mongo 查询器依赖-->
      <dependency>
            <groupId>com.github.xuejike</groupId>
            <artifactId>lambda-query-mongo-starter</artifactId>
            <version>${jkquery.version}</version>
        </dependency>
<!--MybatisPlus 查询器依��енция-->

    <dependency>
    <groupId>com.github.xuejike</groupId>
    <artifactId>lambda-query-mybatis-plus-starter</artifactId>
    <version>${jkquery.version}</version>
    </dependency>
  1. Ручная настройка:

Добавить зависимости:

<!--Mongo 查询器依赖-->
      <dependency>
            <groupId>com.github.xuejike</groupId>
            <artifactId>lambda-query-mongo</artifactId>
            <version>${jkquery.version}</version>
        </dependency>

        <!--MybatisPlus 查询器依��енци-->

    <dependency>
        <groupId>com.github.xuejike</groupId>
        <artifactId>lambda-query-mybatis-plus</artifactId>
        <version>${jkquery.version}</version>
    </dependency>

Инициализировать фабрику классов:

// MongoDB 查询器 инициализация
   @Bean
    public MongoDaoFactory mongoDaoFactory(MongoTemplate mongoTemplate){
            return new MongoDaoFactory(mongoTemplate);
    }

// MybatisPlus 查询器 инициализация
    @Bean
    public MyBatisPlusDaoFactory myBatisPlusDaoFactory(Collection<BaseMapper> mapperCollection){
            MyBatisPlusDaoFactory myBatisPlusDaoFactory = new MyBatisPlusDaoFactory(mapperCollection);
            return myBatisPlusDaoFactory;
    }

Использование MongoDB-запроса

Создание класса сущности

@Document("demo_doc")
@Data
// Для выполнения запросов MongoDB
@MongoDaoSelect
public class TestDoc {
    @MongoId
    private String id;
    private String name;
    private String title;
    private Long num;
    private List<Title> toc;
    @Data
    public static class Title{
        private String title;
        private String desc;

    }
}

Использование MybatisPlus-запроса

Создание сущности MybatisPlus:

@Data
@TableName("u1")
@MyBatisPlusDaoSelect
public class U1 {
    @TableId(type = IdType.AUTO)
    private Long id;
    private String name;
    private String type;

}

HTTP-запрос

  1. Экспозиция интерфейса:
    @PostConstruct
    public void init(){
        LambdaQueryHttpConfig.getInstance().registerService("u1", U1.class);
        HttpClientFactory httpClientFactory = new HttpClientFactory();
    }
  1. Определение запроса:
@HttpDaoSelect( serverAddress = "http://127.0.0.1:7000",path = "/lambda/u1/")
@Data
public class HttpEntity {
    private Long id;
    private String name;
    private String type;
    private Long u2Id;
}

  1. Использование запроса:
    @Test
    public void list(){
        JQuerys.lambdaQuery(HttpRequest.class).eq(HttpRequest::getName,"xxx").eq(HttpRequest::getUserName,"un").list();
    }

Описание функций

1. Базовые функции запроса

/**
 * == запрос
 */
@Test
public void testEq(){
        List<TestDoc> list = JQuerys.lambdaQuery(TestDoc.class).eq(TestDoc::getName, "name_1").list();

``` ### 2. Двухуровневый и JSON-запрос (незавершённый)

```java
/**
 * Двухуровневый запрос
 */
@Test
public void testSubField() {
    List<TestDoc> list = JQuerys.lambdaQuery(TestDoc.class).eq(of().subList(TestDoc::getToc).sub(TestDoc.Title::getTitle), "sub_title_0_0").list();
    Assertions.assertEquals(list.size(), 1);
    Assertions.assertEquals(list.get(0).getNum(), 0);
}
public CascadeField<TestDoc, TestDoc> of() {
    return new CascadeField<>();
}

3. Запрос с использованием функции loadJoin

Использование selectIn и параллельных вычислений для объединения запросов join.

@GetMapping("list")
public Object testList() {
    JLambdaQuery<HttpEntity> query = JQuerys.lambdaQuery(HttpEntity.class);
    Object list = query.or().eq(HttpEntity::getName, "name1").or()
            .eq(HttpEntity::getName, "name2")
    // Атрибут u2Id связан с сущностью U2 через поле id, и результаты сопоставляются с U1Vo.
            .loadRef(HttpEntity::getU2Id, U2.class, U2::getId).map(U1Vo.class).list();
    return
``` ```java
@Data
public class U1Vo {
    private Long id;
    private String name;
    private String type;
    @SetRefValue("u2")
    private Long u2Id;
    @RefValue("#u2.name")
    private String u2Name;
}

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

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

Введение

На основе Lambda-запросчика — JPA Lambda-запросчик — Lambda-запросчик для MongoDb в разработке. Развернуть Свернуть
Java и 2 других языков
GPL-2.0
Отмена

Обновления

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

Участники

все

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

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