Commit d8e1610495fb3dfc66c1d368d4e26af952e8d37f
1 parent
eca93073
feat: enhance MyBatis utility for sorting and update SQL aliases in TradeOrderStatisticsMapper
Showing
3 changed files
with
25 additions
and
11 deletions
yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/mapper/BaseMapperX.java
| ... | ... | @@ -42,6 +42,7 @@ public interface BaseMapperX<T> extends MPJBaseMapper<T> { |
| 42 | 42 | default PageResult<T> selectPage(PageParam pageParam, Collection<SortingField> sortingFields, @Param("ew") Wrapper<T> queryWrapper) { |
| 43 | 43 | // 特殊:不分页,直接查询全部 |
| 44 | 44 | if (PageParam.PAGE_SIZE_NONE.equals(pageParam.getPageSize())) { |
| 45 | + MyBatisUtils.addOrder(queryWrapper, sortingFields); | |
| 45 | 46 | List<T> list = selectList(queryWrapper); |
| 46 | 47 | return new PageResult<>(list, (long) list.size()); |
| 47 | 48 | } | ... | ... |
yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/util/MyBatisUtils.java
| 1 | 1 | package cn.iocoder.yudao.framework.mybatis.core.util; |
| 2 | 2 | |
| 3 | -import cn.hutool.core.collection.CollectionUtil; | |
| 3 | +import cn.hutool.core.collection.CollUtil; | |
| 4 | 4 | import cn.hutool.core.lang.func.Func1; |
| 5 | 5 | import cn.hutool.core.lang.func.LambdaUtil; |
| 6 | 6 | import cn.hutool.core.util.StrUtil; |
| ... | ... | @@ -8,6 +8,8 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| 8 | 8 | import cn.iocoder.yudao.framework.common.pojo.SortingField; |
| 9 | 9 | import cn.iocoder.yudao.framework.mybatis.core.enums.DbTypeEnum; |
| 10 | 10 | import com.baomidou.mybatisplus.annotation.DbType; |
| 11 | +import com.baomidou.mybatisplus.core.conditions.Wrapper; | |
| 12 | +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |
| 11 | 13 | import com.baomidou.mybatisplus.core.metadata.OrderItem; |
| 12 | 14 | import com.baomidou.mybatisplus.core.toolkit.StringPool; |
| 13 | 15 | import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; |
| ... | ... | @@ -20,7 +22,6 @@ import net.sf.jsqlparser.schema.Table; |
| 20 | 22 | import java.util.ArrayList; |
| 21 | 23 | import java.util.Collection; |
| 22 | 24 | import java.util.List; |
| 23 | -import java.util.stream.Collectors; | |
| 24 | 25 | |
| 25 | 26 | /** |
| 26 | 27 | * MyBatis 工具类 |
| ... | ... | @@ -37,15 +38,27 @@ public class MyBatisUtils { |
| 37 | 38 | // 页码 + 数量 |
| 38 | 39 | Page<T> page = new Page<>(pageParam.getPageNo(), pageParam.getPageSize()); |
| 39 | 40 | // 排序字段 |
| 40 | - if (!CollectionUtil.isEmpty(sortingFields)) { | |
| 41 | - page.addOrder(sortingFields.stream().map(sortingField -> SortingField.ORDER_ASC.equals(sortingField.getOrder()) | |
| 42 | - ? OrderItem.asc(StrUtil.toUnderlineCase(sortingField.getField())) | |
| 43 | - : OrderItem.desc(StrUtil.toUnderlineCase(sortingField.getField()))) | |
| 44 | - .collect(Collectors.toList())); | |
| 41 | + if (CollUtil.isNotEmpty(sortingFields)) { | |
| 42 | + for (SortingField sortingField : sortingFields) { | |
| 43 | + page.addOrder(new OrderItem().setAsc(SortingField.ORDER_ASC.equals(sortingField.getOrder())) | |
| 44 | + .setColumn(StrUtil.toUnderlineCase(sortingField.getField()))); | |
| 45 | + } | |
| 45 | 46 | } |
| 46 | 47 | return page; |
| 47 | 48 | } |
| 48 | 49 | |
| 50 | + public static <T> void addOrder(Wrapper<T> wrapper, Collection<SortingField> sortingFields) { | |
| 51 | + if (CollUtil.isEmpty(sortingFields)) { | |
| 52 | + return; | |
| 53 | + } | |
| 54 | + QueryWrapper<T> query = (QueryWrapper<T>) wrapper; | |
| 55 | + for (SortingField sortingField : sortingFields) { | |
| 56 | + query.orderBy(true, | |
| 57 | + SortingField.ORDER_ASC.equals(sortingField.getOrder()), | |
| 58 | + StrUtil.toUnderlineCase(sortingField.getField())); | |
| 59 | + } | |
| 60 | + } | |
| 61 | + | |
| 49 | 62 | /** |
| 50 | 63 | * 将拦截器添加到链中 |
| 51 | 64 | * 由于 MybatisPlusInterceptor 不支持添加拦截器,所以只能全量设置 | ... | ... |
yudao-module-mall/yudao-module-statistics/src/main/resources/mapper/trade/TradeOrderStatisticsMapper.xml
| ... | ... | @@ -76,8 +76,8 @@ |
| 76 | 76 | <select id="selectListByPayTimeBetweenAndGroupByMonth" |
| 77 | 77 | resultType="cn.iocoder.yudao.module.statistics.controller.admin.trade.vo.TradeOrderTrendRespVO"> |
| 78 | 78 | SELECT DATE_FORMAT(pay_time, '%Y-%m') AS date, |
| 79 | - COUNT(1) AS orderPayCount, | |
| 80 | - SUM(pay_price) AS orderPayPrice | |
| 79 | + COUNT(1) AS order_pay_count, | |
| 80 | + SUM(pay_price) AS order_pay_price | |
| 81 | 81 | FROM trade_order |
| 82 | 82 | WHERE pay_status = TRUE |
| 83 | 83 | AND create_time BETWEEN #{beginTime} AND #{endTime} |
| ... | ... | @@ -95,8 +95,8 @@ |
| 95 | 95 | |
| 96 | 96 | <select id="selectPaySummaryByPayStatusAndPayTimeBetween" |
| 97 | 97 | resultType="cn.iocoder.yudao.module.statistics.controller.admin.trade.vo.TradeOrderSummaryRespVO"> |
| 98 | - SELECT IFNULL(SUM(pay_price), 0) AS orderPayPrice, | |
| 99 | - COUNT(1) AS orderPayCount | |
| 98 | + SELECT IFNULL(SUM(pay_price), 0) AS order_pay_price, | |
| 99 | + COUNT(1) AS order_pay_count | |
| 100 | 100 | FROM trade_order |
| 101 | 101 | WHERE pay_status = #{payStatus} |
| 102 | 102 | AND pay_time BETWEEN #{beginTime} AND #{endTime} | ... | ... |