lambdaquerywrapper聚合函数
时间: 2023-08-21 20:15:55 浏览: 65
LambdaQueryWrapper是无法直接使用sum聚合函数的,因为LambdaQueryWrapper的select()方法无法传入字符串。但是,我们可以通过一些技巧来实现。首先,我们可以使用QueryWrapper来处理掉聚合函数,然后再使用.lambda()方法将其转换为LambdaQueryWrapper,以便在下面使用lambda写法。现在,我们可以使用SUM(fee_amt)来计算手续费总额,将其直接放入fee_amt字段中,无需添加新的属性。如果不想这样处理,也可以通过添加一个新的对象来补充一个汇总字段。要注意的是,LambdaQueryWrapper的select方法使用SFunction接收参数,并将参数转换为字符串。因此,我们可以根据流的方式将SFunction转换为字符串,以便使用聚合函数。下面是一个处理sql查询字段名的示例代码:private String getParamSql(SFunction<OrderModel, ?>... columns) { return Arrays.stream(columns).map(c -> StrUtil.toUnderlineCase(LambdaUtils.getName(c))).collect(Collectors.joining(StringPool.COMMA, StringPool.SPACE, StringPool.SPACE)); }
相关问题
LambdaQueryWrapper 聚合函数
LambdaQueryWrapper是MyBatis-Plus中的一个查询构造器,它支持使用Lambda表达式来构建查询条件。在LambdaQueryWrapper中,我们可以使用聚合函数来对查询结果进行聚合操作。以下是LambdaQueryWrapper中常用的聚合函数及其使用方法:
1. count:统计查询结果的行数
```java
// 统计User表中年龄大于18岁的用户数量
int count = userMapper.selectCount(new LambdaQueryWrapper<User>()
.gt(User::getAge, 18));
```
2. sum:计算查询结果某一列的总和
```java
// 计算Order表中所有订单的总金额
BigDecimal totalAmount = orderMapper.selectOne(new LambdaQueryWrapper<Order>()
.select(Order::getAmount)
.lambda())
.getAmount();
```
3. avg:计算查询结果某一列的平均值
```java
// 计算Order表中所有订单的平均金额
BigDecimal avgAmount = orderMapper.selectOne(new LambdaQueryWrapper<Order>()
.select(Order::getAmount)
.lambda())
.getAmount();
```
4. max:查询查询结果某一列的最大值
```java
// 查询User表中年龄最大的用户
User maxAgeUser = userMapper.selectOne(new LambdaQueryWrapper<User>()
.orderByDesc(User::getAge)
.last("limit 1"));
```
5. min:查询查询结果某一列的最小值
```java
// 查询User表中年龄最小的用户
User minAgeUser = userMapper.selectOne(new LambdaQueryWrapper<User>()
.orderByAsc(User::getAge)
.last("limit 1"));
```
LambdaQueryWrapper聚合函数
LambdaQueryWrapper是无法直接使用sum聚合函数的,因为它的select()方法无法传入字符串。然而,我们可以通过一些巧妙的方法来实现聚合函数的功能。一种方法是先使用QueryWrapper处理掉聚合函数,然后再使用.lambda()方法将其转换成LambdaQueryWrapper,以便能够使用lambda写法。你可以将SUM(fee_amt)直接放在fee_amt属性中,或者在一个新的对象中添加一个汇总字段。具体的代码可以参考。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [LambdaQueryWrapper使用 group分组、sum聚合函数 进行统计,并分页排序](https://blog.csdn.net/qq_36903261/article/details/126888665)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]