Lambda-query 1.0 версия
Введение
LambdaQuery будет поддерживать запросы к различным источникам данных и обеспечивать унифицированный доступ к простым данным в Java.
Функциональное планирование
Поддержка функций
Использование
<!--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>
Добавить зависимости:
<!--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;
}
@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:
@Data
@TableName("u1")
@MyBatisPlusDaoSelect
public class U1 {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private String type;
}
@PostConstruct
public void init(){
LambdaQueryHttpConfig.getInstance().registerService("u1", U1.class);
HttpClientFactory httpClientFactory = new HttpClientFactory();
}
@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;
}
@Test
public void list(){
JQuerys.lambdaQuery(HttpRequest.class).eq(HttpRequest::getName,"xxx").eq(HttpRequest::getUserName,"un").list();
}
/**
* == запрос
*/
@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<>();
}
Использование 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 )