クエリ条件を集計するために、いくつかのデータを追加しました。
最小年齢を取得しようとします。
メソッド実装
@Override public Integer getAgeMin() { Mapresult = testFluentMybatisMapper .findOneMap(new TestFluentMybatisQuery().select.min.age("minAge").end()) .orElse(null); return result != null ? Convert.toInt(result.get("minAge"), 0) : 0; }
コントロール層コード
@ApiOperation(value = "获取最小年龄", notes = "获取最小年龄") @RequestMapping(value = "/getAgeMin", method = RequestMethod.GET) @ResponseBody public ResultgetAgeMin() { try { return Result.ok(aggregateService.getAgeMin()); } catch (Exception exception) { return Result.error(ErrorCode.BASE_ERROR_CODE.getCode(), exception.getMessage(), null); } }
デバッグコード
コードの説明:
1. age("minAge") に文字列を追加する必要があるのはなぜですか?追加しなくても大丈夫でしょうか?答えは「はい」ですが、返される結果は次のとおりです。
はい、括弧内は集計クエリ結果のエイリアスです。渡さないと恥ずかしい結果になります。渡すことをお勧めします。
max 集計関数を実行するときは、もう少し複雑にして group by を追加します。
戻りエンティティを定義します。
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; }
メソッド実装
@Override public ListgetAgeMaxByName() { List
コントロール層コード
@ApiOperation(value = "根据年龄分组并获取最大年龄", notes = "根据年龄分组并获取最大年龄") @RequestMapping(value = "/getAgeMaxByName", method = RequestMethod.GET) @ResponseBody public Result> getAgeMaxByName() { try { return Result.ok(aggregateService.getAgeMaxByName()); } catch (Exception exception) { return Result.error(ErrorCode.BASE_ERROR_CODE.getCode(), exception.getMessage(), null); } }
デバッグコード
##OK、問題ありません。 コードの説明: 1. Hutools ツール BeanUtil を使用して、マップ値をエンティティ オブジェクトに入力します。 SUM、AVG、COUNT sum、avg、count を一緒に加算してみましょう。 リターンボディの定義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; }
@Override public ListgetAgeSumAvgCountByName() { List
@ApiOperation(value = "根据年龄分组并获取年龄和、平均年龄、数量", notes = "根据年龄分组并获取年龄和、平均年龄、数量") @RequestMapping(value = "/getAgeSumAvgCountByName", method = RequestMethod.GET) @ResponseBody public Result> getAgeSumAvgCountByName() { try { return Result.ok(aggregateService.getAgeSumAvgCountByName()); } catch (Exception exception) { return Result.error(ErrorCode.BASE_ERROR_CODE.getCode(), exception.getMessage(), null); } }
# ##大丈夫完璧。
Apply メソッドの使用法
リターンボディ定義
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; }
メソッド実装
@Override public ListgetApply() { List
制御層コード
@ApiOperation(value = "根据名字获取最小年龄,使用语句", notes = "根据名字获取最小年龄,使用语句") @RequestMapping(value = "/getApply", method = RequestMethod.GET) @ResponseBody public Result> getApply() { try { return Result.ok(aggregateService.getApply()); } catch (Exception exception) { return Result.error(ErrorCode.BASE_ERROR_CODE.getCode(), exception.getMessage(), null); } }
デバッグコード
##大丈夫完璧。
以上がJava Fluent Mybatis 集計クエリと適用メソッド プロセスの分析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。