Heim > Java > javaLernprogramm > Hauptteil

Beispielanalyse des Java Fluent Mybatis-Aggregationsabfrage- und Anwendungsmethodenprozesses

WBOY
Freigeben: 2023-05-22 13:31:06
nach vorne
1390 Leute haben es durchsucht

Datenvorbereitung

Um die Abfragebedingungen zu aggregieren, wurden mehrere Daten hinzugefügt.

Java Fluent Mybatis聚合查询与apply方法流程的示例分析

MIN

Wir versuchen das Mindestalter zu erreichen.

Methodenimplementierung

  @Override
  public Integer getAgeMin() {
    Map<String, Object> result =
        testFluentMybatisMapper
            .findOneMap(new TestFluentMybatisQuery().select.min.age("minAge").end())
            .orElse(null);
    return result != null ? Convert.toInt(result.get("minAge"), 0) : 0;
  }
Nach dem Login kopieren

Kontrollschichtcode

  @ApiOperation(value = "获取最小年龄", notes = "获取最小年龄")
  @RequestMapping(value = "/getAgeMin", method = RequestMethod.GET)
  @ResponseBody
  public Result<Integer> getAgeMin() {
    try {
      return Result.ok(aggregateService.getAgeMin());
    } catch (Exception exception) {
      return Result.error(ErrorCode.BASE_ERROR_CODE.getCode(), exception.getMessage(), null);
    }
  }
Nach dem Login kopieren

Debugging-Code

Java Fluent Mybatis聚合查询与apply方法流程的示例分析

Codebeschreibung:

1. Warum müssen wir dem Alter („minAge“) eine Zeichenfolge hinzufügen? Ist es in Ordnung, es nicht hinzuzufügen? Die Antwort lautet „Ja“, aber die zurückgegebenen Ergebnisse sehen wie folgt aus.

Java Fluent Mybatis聚合查询与apply方法流程的示例分析

Das ist richtig, was in den Klammern steht, ist der Alias ​​des aggregierten Abfrageergebnisses. Wenn Sie es nicht übergeben, wird das Ergebnis peinlich sein.

MAX

Wenn ich die maximale Aggregationsfunktion ausführe, mache ich es etwas komplizierter und füge „Gruppierung nach“ hinzu.

Definieren Sie die Rückgabeeinheit.

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
 
/** @Author huyi @Date 2021/10/26 14:15 @Description: 聚合最大年龄返回体 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class AggregateMaxAgeRsp {
  private String name;
  private Integer maxAge;
}
Nach dem Login kopieren

Methodenimplementierung

  @Override
  public List<AggregateMaxAgeRsp> getAgeMaxByName() {
    List<Map<String, Object>> result =
        testFluentMybatisMapper.listMaps(
            new TestFluentMybatisQuery()
                .select
                .name()
                .max
                .age("maxAge")
                .end()
                .groupBy
                .name()
                .end());
    if (result != null && result.size() != 0) {
      List<AggregateMaxAgeRsp> list = new ArrayList<>();
      result.forEach(
          x -> list.add(BeanUtil.fillBeanWithMapIgnoreCase(x, new AggregateMaxAgeRsp(), false)));
      return list;
    } else {
      return null;
    }
  }
Nach dem Login kopieren

Steuerschichtcode

  @ApiOperation(value = "根据年龄分组并获取最大年龄", notes = "根据年龄分组并获取最大年龄")
  @RequestMapping(value = "/getAgeMaxByName", method = RequestMethod.GET)
  @ResponseBody
  public Result<List<AggregateMaxAgeRsp>> getAgeMaxByName() {
    try {
      return Result.ok(aggregateService.getAgeMaxByName());
    } catch (Exception exception) {
      return Result.error(ErrorCode.BASE_ERROR_CODE.getCode(), exception.getMessage(), null);
    }
  }
Nach dem Login kopieren

Debug-Code

Java Fluent Mybatis聚合查询与apply方法流程的示例分析

OK, kein Problem.

Codebeschreibung:

1. Verwenden Sie das Hutools-Tool BeanUtil, um den Kartenwert in das Entitätsobjekt einzugeben.

SUMME, AVG, ANZAHL

Summe, Durchschnitt, Anzahl und probieren Sie es gemeinsam aus.

Rückgabetext definieren

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
 
/** @Author huyi @Date 2021/10/26 14:50 @Description: 聚合平均总和返回体 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class AggregateAgeSumAvgAndCountRsp {
  private String name;
  private Integer sum;
  private Integer avg;
  private Integer count;
}
Nach dem Login kopieren

Methodenimplementierung

  @Override
  public List<AggregateAgeSumAvgAndCountRsp> getAgeSumAvgCountByName() {
    List<Map<String, Object>> result =
        testFluentMybatisMapper.listMaps(
            new TestFluentMybatisQuery()
                .select
                .name()
                .sum
                .age("sum")
                .avg
                .age("avg")
                .count("count")
                .end()
                .groupBy
                .name()
                .end());
    if (result != null && result.size() != 0) {
      List<AggregateAgeSumAvgAndCountRsp> list = new ArrayList<>();
      result.forEach(
          x ->
              list.add(
                  BeanUtil.fillBeanWithMapIgnoreCase(
                      x, new AggregateAgeSumAvgAndCountRsp(), false)));
      return list;
    } else {
      return null;
    }
  }
Nach dem Login kopieren

Steuerschichtcode

  @ApiOperation(value = "根据年龄分组并获取年龄和、平均年龄、数量", notes = "根据年龄分组并获取年龄和、平均年龄、数量")
  @RequestMapping(value = "/getAgeSumAvgCountByName", method = RequestMethod.GET)
  @ResponseBody
  public Result<List<AggregateAgeSumAvgAndCountRsp>> getAgeSumAvgCountByName() {
    try {
      return Result.ok(aggregateService.getAgeSumAvgCountByName());
    } catch (Exception exception) {
      return Result.error(ErrorCode.BASE_ERROR_CODE.getCode(), exception.getMessage(), null);
    }
  }
Nach dem Login kopieren

Debug-Code

Java Fluent Mybatis聚合查询与apply方法流程的示例分析

OK, perfekt.

Anwendung der Methode anwenden

Stellt offiziell die Syntaxfunktion .apply bereit, um frei angegebene Felder anzuzeigen. Testen wir, ob es funktioniert oder nicht.

Rückgabekörperdefinition

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
 
import java.util.Date;
 
/** @Author huyi @Date 2021/10/26 15:10 @Description: 聚合应用返回体 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class AggregateApplyRsp {
  private String name;
  private Date createTime;
  private Integer minAge;
  private Date maxTime;
}
Nach dem Login kopieren

Methodenimplementierung

  @Override
  public List<AggregateApplyRsp> getApply() {
    List<Map<String, Object>> result =
        testFluentMybatisMapper.listMaps(
            new TestFluentMybatisQuery()
                .select
                .apply("name")
                .createTime("createTime")
                .apply("min(age) as minAge", "max(create_time) as maxTime")
                .end()
                .groupBy
                .name()
                .createTime()
                .end());
    if (result != null && result.size() != 0) {
      List<AggregateApplyRsp> list = new ArrayList<>();
      result.forEach(
          x -> list.add(BeanUtil.fillBeanWithMapIgnoreCase(x, new AggregateApplyRsp(), false)));
      return list;
    } else {
      return null;
    }
  }
Nach dem Login kopieren

Steuerschichtcode

  @ApiOperation(value = "根据名字获取最小年龄,使用语句", notes = "根据名字获取最小年龄,使用语句")
  @RequestMapping(value = "/getApply", method = RequestMethod.GET)
  @ResponseBody
  public Result<List<AggregateApplyRsp>> getApply() {
    try {
      return Result.ok(aggregateService.getApply());
    } catch (Exception exception) {
      return Result.error(ErrorCode.BASE_ERROR_CODE.getCode(), exception.getMessage(), null);
    }
  }
Nach dem Login kopieren

Debug-Code

Java Fluent Mybatis聚合查询与apply方法流程的示例分析

OK, perfekt.

Das obige ist der detaillierte Inhalt vonBeispielanalyse des Java Fluent Mybatis-Aggregationsabfrage- und Anwendungsmethodenprozesses. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!