FluentMybatis 聚合查询、apply方法 | FluentMybatis实践(2)

简介: FluentMybatis 聚合查询、apply方法 | FluentMybatis实践(2)

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);
}
}
调试代码
OK,完美。
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);
}
}
调试代码
OK,完美。
总结
在调试完聚合查询代码后给我直观感受是,这和写sql没啥区别,十分好理解。只是需要掌握fm的select语法,特别是end方法的理解,可以追一下源码看一下具体实现过程。

相关文章
|
27天前
|
设计模式 虚拟化 开发者
利用SwiftUI构建动态列表的高级技巧
【4月更文挑战第14天】 在本文中,我们将深入探讨如何运用SwiftUI框架实现一个具有高度交互性和动态性的列表视图。我们将透过具体实例,展示如何结合SwiftUI的声明式语法与先进的设计模式,来优化列表的性能和用户体验。文中将涵盖数据绑定、动画过渡、以及状态管理的实用技巧,并讨论如何通过这些技术提升应用的响应性和可扩展性。
|
5月前
|
Java 关系型数据库 数据库连接
Hasor【环境搭建 02】Dataway接口配置服务使用DataQL聚合查询引擎(Mybatis执行器实现分页查询举例说明+问题分析)
Hasor【环境搭建 02】Dataway接口配置服务使用DataQL聚合查询引擎(Mybatis执行器实现分页查询举例说明+问题分析)
76 0
|
9月前
|
SQL Java 数据库连接
掌握 MyBatis <choose>标签:优化动态查询条件的利器
当谈到在Java应用程序中进行数据库访问时,MyBatis 是一个备受欢迎的持久层框架。它的强大之处在于提供了灵活性和可定制性,使得数据库操作变得更加简便。在这篇文章中,我们将深入介绍 MyBatis 中的`&lt;choose&gt;` 标签,它是一个有趣且功能强大的元素,用于在 SQL 映射文件中进行条件选择。
138 0
|
9月前
Service层有多个查询,若依(ruoyi)分页失灵?如何解决呢?
Service层有多个查询,若依(ruoyi)分页失灵?如何解决呢?
806 0
MybatisPlus查询条件构造器的in的用法避坑
MybatisPlus查询条件构造器的in的用法避坑
FluentMybatis 聚合查询、apply方法 | FluentMybatis实践(2)
FluentMybatis 聚合查询、apply方法 | FluentMybatis实践
FluentMybatis 聚合查询、apply方法 | FluentMybatis实践(2)
FluentMybatis 聚合查询、apply方法 | FluentMybatis实践
FluentMybatis 聚合查询、apply方法 | FluentMybatis实践
FluentMybatis 聚合查询、apply方法 | FluentMybatis实践
FluentMybatis Update语法 | FluentMybatis实践
FluentMybatis Update语法 | FluentMybatis实践
FluentMybatis Update语法 | FluentMybatis实践
FluentMybatis Where语法(一) | FluentMybatis实践(3)
FluentMybatis Where语法(一) | FluentMybatis实践
FluentMybatis Where语法(一) | FluentMybatis实践(3)