本文主要是介绍springboot-mybatis plus工程统计消费余额的正确方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
统计已经消费的金额,因为数据库的已经消费的条数很多,做统计信息如果全部拉入内存计算,会出现问题,造成请求的接口很慢。
如下图所示的做法:
override fun getConsumeAmountByTenantId(tenantId: Long): BigDecimal=this.list(QueryWrapper<SubAccountRecord>().allEq(mapOf("tenant_id" to tenantId, "transaction_type" to TransactionType.ORDER_DEDUCTION))).sumOf { it.amount!! }
通过sql进行统计,这样请求会相对快一些
/*** 查询租户已花费金额* 消费笔数太多,sum计算修改为数据库中计算*/override fun getConsumeAmountByTenantId(tenantId: Long): BigDecimal{val queryWrapper: QueryWrapper<SubAccountRecord> = QueryWrapper<SubAccountRecord>()queryWrapper.select("sum(amount) as sum_amount ")queryWrapper.allEq(mapOf("tenant_id" to tenantId, "transaction_type" to TransactionType.ORDER_DEDUCTION))val sumAmountMap=this.getMap(queryWrapper)?: return BigDecimal.ZEROreturn sumAmountMap["sum_amount"].toString().toBigDecimal()}
执行的sql为
SELECT sum(amount) as sum_amount FROM sub_account_record WHERE deleted=0 AND (tenant_id = 1436952636891992064 AND transaction_type = 'EXPIRED_DEDUCTION')
这篇关于springboot-mybatis plus工程统计消费余额的正确方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!