Maison > Java > javaDidacticiel > Exemple d'analyse de la requête d'agrégation Java Fluent Mybatis et du processus d'application de la méthode

Exemple d'analyse de la requête d'agrégation Java Fluent Mybatis et du processus d'application de la méthode

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2023-05-22 13:31:06
avant
1672 Les gens l'ont consulté

Préparation des données

Afin d'agréger les conditions de requête, plusieurs données ont été ajoutées.

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

MIN

Nous essayons d'obtenir l'âge minimum.

Mise en œuvre de la méthode

  @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;
  }
Copier après la connexion

Code de la couche de contrôle

  @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);
    }
  }
Copier après la connexion

Code de débogage

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

Description du code :

1. Pourquoi devons-nous ajouter une chaîne à age("minAge") ? Est-il acceptable de ne pas l'ajouter ? La réponse est oui, mais les résultats que vous voyez sont les suivants.

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

C'est vrai, ce qui est entre parenthèses est l'alias du résultat global de la requête. Si vous ne le transmettez pas, le résultat sera embarrassant.

MAX

Lors de l'exécution de la fonction d'agrégation maximale, je vais la rendre un peu plus compliquée et ajouter un groupe par.

Définissez l'entité de retour.

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;
}
Copier après la connexion

Implémentation de la méthode

  @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;
    }
  }
Copier après la connexion

Code de la couche de contrôle

  @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);
    }
  }
Copier après la connexion

Code de débogage

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

OK, pas de problème.

Description du code :

1. Utilisez l'outil Hutools BeanUtil pour remplir la valeur de la carte dans l'objet entité.

SUM, AVG, COUNT

sum, moy, count et essayez-le ensemble.

Définir le corps de retour

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;
}
Copier après la connexion

Mise en œuvre de la méthode

  @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;
    }
  }
Copier après la connexion

Code de la couche de contrôle

  @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);
    }
  }
Copier après la connexion

Code de débogage

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

OK, parfait.

Utilisation de la méthode apply

Fournit officiellement la fonction de syntaxe .apply pour afficher les champs librement spécifiés. Testons si cela fonctionne ou non.

Définition du corps de retour

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;
}
Copier après la connexion

Mise en œuvre de la méthode

  @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;
    }
  }
Copier après la connexion

Code de la couche de contrôle

  @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);
    }
  }
Copier après la connexion

Code de débogage

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

OK, parfait.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers numéros
Impossible d'installer Java
Depuis 1970-01-01 08:00:00
0
0
0
Java peut-il être utilisé comme backend du Web ?
Depuis 1970-01-01 08:00:00
0
0
0
Installer JAVA
Depuis 1970-01-01 08:00:00
0
0
0
Aide : Données chiffrées JAVA Décryptage PHP
Depuis 1970-01-01 08:00:00
0
0
0
Est-ce en langage Java ?
Depuis 1970-01-01 08:00:00
0
0
0
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal