mybatisplus不支持sum,但支持这个(mybatis plus支持oracle吗)

  本篇文章为你整理了mybatisplus不支持sum,但支持这个(mybatis plus支持oracle吗)的详细内容,包含有mybatisplus不支持两表查询 mybatis plus支持oracle吗 mybatis could not set property mybatisplus支持哪些数据库 mybatisplus不支持sum,但支持这个,希望能帮助你了解 mybatisplus不支持sum,但支持这个。

  我们知道,要对数据求和,写sql很简单:select sum(exp) from table_name
我们在用mybatisplus做求和计算的时候,mybatisplus的Wrapper不支持sum函数。事实上,mybatisplus只有 求count 的api,至于其他聚合函数,例如sum、max、min、avg等,都是不支持的。
这种情况下,我们就无法使用lambda表达式了,只能以字符串的形式写"sum(xxx)", look below:

  

public Result Long getPlatOrderTransCount(MerPlatOrderRequest merPlatOrderRequest) {

 

   QueryWrapper SbhPlatOrder queryWrapper = new QueryWrapper ();

   queryWrapper.select("sum(amt) as total ");

   queryWrapper.between("order_end_time", merPlatOrderRequest.getStartTime(),merPlatOrderRequest.getEndTime());

   Map String, Object count = sbhPlatOrderManager.getMap(queryWrapper);

   if (count==null){

   return Result.success(0L);

   Double total = Double.valueOf(String.valueOf(count.get("total")));

   return Result.success(total.longValue());

  }

 

  

  再一种情况,我们对数据做分组查询,sql语句通常是:select col1,col2,sum(exp) from table_name group by col1,col2
同样,在程序里用mybatisplus也是无法用lambda实现,只能拼接sql。like this:

  

public Map String, Object getProviderPromoteTotal(String settleNumber,

 

   EnterpriseProviderDTO enterpriseProviderDTO){

   return this.getMap(new QueryWrapper LevyPromoteDetail ()

   .select("service_id serviceId,separate_state separateState,count(1) countSum,sum(pay_success_amt) payAmount,sum(plat_fee_amt) platAmount,sum(promote_fee_amt) promoteAmount")

   .eq("settle_number", settleNumber)

   .eq("service_id", enterpriseProviderDTO.getProviderId())

   .groupBy("service_id, separate_state"));

  }

 

  

  是不是很不爽?而且,这种字符串的形式存在隐患,当字段名发生变化,一旦这里漏改,就会出现bug。如果用lambda表达式就没这个困扰了,利用IDEA重命名属性,这里会同时变更的。 ∴,能用lambda就用lambda吧。本着这个原则,于是乎,就有了下面的代码,只是把没办法的sum放到字符串里,其他字段仍然用lambda,尽力了~~

  

public void total() {

 

   QueryWrapper SbhPlatOrder queryWrapper = Wrappers.query();

   queryWrapper.lambda()

   .ge(SbhPlatOrder::getCreateTime, new Date())

   .lt(SbhPlatOrder::getCreateTime, new Date())

   .groupBy(SbhPlatOrder::getProduct, SbhPlatOrder::getEnterpriseId, SbhPlatOrder::getLevyId);

   queryWrapper.lambda().select(SbhPlatOrder::getEnterpriseId, SbhPlatOrder::getProduct);

   String columns= queryWrapper.getSqlSelect()+",sum(IFNULL(suc_amt,0))";

   queryWrapper.select(columns);

   List SbhPlatOrder list = sbhPlatOrderManager.list(queryWrapper);

  }

 

  

  
当看到一些不好的代码时,会发现我还算优秀;当看到优秀的代码时,也才意识到持续学习的重要!--buguge
本文来自,转载请注明原文链接:https:///buguge/p/16739740.html

  以上就是mybatisplus不支持sum,但支持这个(mybatis plus支持oracle吗)的详细内容,想要了解更多 mybatisplus不支持sum,但支持这个的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: