Java Fluent Mybatis 集計クエリと適用メソッド プロセスの分析例

WBOY
リリース: 2023-05-22 13:31:06
転載
1389 人が閲覧しました

データの準備

クエリ条件を集計するために、いくつかのデータを追加しました。

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

MIN

最小年齢を取得しようとします。

メソッド実装

@Override public Integer getAgeMin() { Map result = 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 Result getAgeMin() { try { return Result.ok(aggregateService.getAgeMin()); } catch (Exception exception) { return Result.error(ErrorCode.BASE_ERROR_CODE.getCode(), exception.getMessage(), null); } }
ログイン後にコピー

デバッグコード

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

コードの説明:

1. age("minAge") に文字列を追加する必要があるのはなぜですか?追加しなくても大丈夫でしょうか?答えは「はい」ですが、返される結果は次のとおりです。

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

はい、括弧内は集計クエリ結果のエイリアスです。渡さないと恥ずかしい結果になります。渡すことをお勧めします。

MAX

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 List getAgeMaxByName() { List> result = testFluentMybatisMapper.listMaps( new TestFluentMybatisQuery() .select .name() .max .age("maxAge") .end() .groupBy .name() .end()); if (result != null && result.size() != 0) { List list = new ArrayList<>(); result.forEach( x -> list.add(BeanUtil.fillBeanWithMapIgnoreCase(x, new AggregateMaxAgeRsp(), false))); return list; } else { return null; } }
ログイン後にコピー

コントロール層コード

@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); } }
ログイン後にコピー

デバッグコード

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

##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 List getAgeSumAvgCountByName() { List> 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 list = new ArrayList<>(); result.forEach( x -> list.add( BeanUtil.fillBeanWithMapIgnoreCase( x, new AggregateAgeSumAvgAndCountRsp(), false))); return list; } else { return null; } }
ログイン後にコピー

制御層コード

@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); } }
ログイン後にコピー

デバッグコード

Java Fluent Mybatis聚合查询与apply方法流程的示例分析# ##大丈夫完璧。

Apply メソッドの使用法

自由に指定したフィールドを表示するための .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 List getApply() { List> 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 list = new ArrayList<>(); result.forEach( x -> list.add(BeanUtil.fillBeanWithMapIgnoreCase(x, new AggregateApplyRsp(), false))); return list; } else { return null; } }
ログイン後にコピー

制御層コード

@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聚合查询与apply方法流程的示例分析

以上がJava Fluent Mybatis 集計クエリと適用メソッド プロセスの分析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!