Mybatis中如何使用sum对字段求和

目录
  • 使用sum对字段求和
  • 避免Mybatis sum求和返回null

使用sum对字段求和

如下sql,为计算用户收益总和:

  <select id="getTotalIncome" resultType="com.lws.test.modules.user.entity.UserIncomeEntity">
    select sum(income) as totalIncome
    from income_log
    where uid = #{uid,jdbcType=BIGINT}
 </select>

其中返回的求和字段类型需要设置为 BigDecimal :

public class UserIncomeEntity {
    private BigDecimal totalIncome;
}

避免Mybatis sum求和返回null

<select id="getOrderSumMoneyByUserCode" parameterType="string" resultType="bigDecimal">
SELEC SUM(ORDER_MONEY ) FROM gm_order WHERE ADD_UID = #{userCode}
</select>

如上写法如果没有结果的话就会返回null,其实我们希望返回的是0.00这种情况

<select id="getOrderSumMoneyByUserCode" parameterType="string" resultType="bigDecimal">
SELECT COALESCE(SUM(ORDER_MONEY),0) FROM gm_order WHERE ADD_UID = #{userCode}
</select>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Mybatis中传递多个参数的4种方法总结

    前言 现在大多项目都是使用Mybatis了,但也有些公司使用Hibernate.使用Mybatis最大的特性就是sql需要自己写,而写sql就需要传递多个参数.面对各种复杂的业务场景,传递参数也是一种学问. 下面给大家总结了以下几种多参数传递的方法. 方法1:顺序传参法 #{}里面的数字代表你传入参数的顺序. 这种方法不建议使用,sql层表达不直观,且一旦顺序调整容易出错. 方法2:@Param注解传参法 #{}里面的名称对应的是注解 @Param括号里面修饰的名称. 这种方法在参数不多的情况还

  • mybatis sum(参数) 列名作为参数的问题

    目录 sum(参数) 列名作为参数 注意事项 mybatis注解sql sum(参数)传参写法 sum(参数) 列名作为参数 项目中有很多个字段,当字段为空的时候,求该列的平均值并赋值给该字段.如:       id name age 当我需要插入一条数据的时候,这条数据的age为空,那么需要先从数据库查询age的平均值,然后赋值给当前的数据.当字段很多的时候就需要列名作为参数查询了 mapper.xml   <select id="getGtAvg" parameterType

  • MyBatis的SUM映射问题及解决

    目录 SUM映射问题 原因 解决方式 sum 返回映射问题(sum报表统计接口返回) MyBatis sum 返回值映射 SUM映射问题 当我们根据类别进行统计,返回的数据类型为HashMap<String,Object>,获取数值类型,容易报 java.math.BigDecimal cannot be cast to java.lang.Integer 场景如下: // Mapper层 <select id="selectInfoByTest" resultTyp

  • Mybatis中如何使用sum对字段求和

    目录 使用sum对字段求和 避免Mybatis sum求和返回null 使用sum对字段求和 如下sql,为计算用户收益总和:   <select id="getTotalIncome" resultType="com.lws.test.modules.user.entity.UserIncomeEntity">     select sum(income) as totalIncome     from income_log     where uid

  • Java8 stream 中利用 groupingBy 进行多字段分组求和案例

    Java8的groupingBy实现集合的分组,类似Mysql的group by分组功能,注意得到的是一个map 对集合按照单个属性分组.分组计数.排序 List<String> items = Arrays.asList("apple", "apple", "banana", "apple", "orange", "banana", "papaya");

  • mybatis中实现让返回值与bean中字段相匹配

    1. 编写目的 这个介绍的与那些修改mybatis.xml文件的方法不一样,目的也不一样. 当我们需要查询的数据跟entity的bean完全不匹配的时候(比如说需要统计的时候),我们不可能写多个dao层的查询接口,然后一个一个map到xml中去. 我们可以专门写一个类,根据自己的需要把统计的属性都写到里面去,然后一次性查询,就可以获得所有需要统计的数据. 2. 重要方法 专门编写一个实体类.实体类中包含的都是自己需要统计的属性. 编写dao层的接口方法的返回值就是这个实体类. 在映射的map.x

  • 如何在mybatis中向BLOB字段批量插入数据

    最近接手一个需求,需要用xxl-job定时任务同步三方库中新增的数据,粗略一看挺得意,以为一两小时就搞定了,但事与愿违,编码两小时却被一个BLOB字段玩了一下午. 每次获取50条数据过来,每条数据中有一个字段是BLOB类型的图片,需求也要将图片放入数据库(个人不建议这么玩,生产上千万的数据会造成数据库很臃肿,建议放到ftp或者minio上比较好),字段中的图片过来时已经被转换成了base64的格式,在往数据库批量插入时,数据库BLOB字段对应的实体使用byte[],程序执行时报了如下错误: or

  • 解决MyBatis中Enum字段参数解析问题

    目录 基础Class和TypeHandler 请求参数解析问题 问题解决 基础Class和TypeHandler MyBatis操作的基本User对象结构如下: @Data @Alias(value = "user") public class User implements Serializable { private static final long serialVersionUID = -4947062488310146862L; private Long id; @NotNu

  • Mybatis中ResultMap解决属性名和数据库字段名不一致问题

    目录 前言 1. 字段名不一致 解决方法: 第一种方式: 起别名 第二种方式: 结果集映射 resultMap 2. 多对一处理 3. 一对多处理 小结 前言 我们Pojo类的属性名和数据库中的字段名不一致的现象时有发生,简单的情况我们可以开启驼峰命名法解决大小写问题,但是遇到其它非大小写问题,我们就不得不使用Mybatis中的结果集映射resultMap. 1. 字段名不一致 数据库中的字段 我们项目中实体类的字段 public class User { private int id; pri

  • 利用Mybatis向PostgreSQL中插入并查询JSON字段

    目录 应用场景介绍 数据insert 数据select BATCH 批量插入 前言: 这里我使用的是TimescaleDB,加了一个时间戳字段,不过没差.关于PostgreSQL中Json数据类型的操作,可以参考官网. 应用场景介绍 将TCP发过来的数据包(通过消息队列发过来)解析出数据(一个数据包含有多帧,一帧中含有多条信息),并和本地规则表的格式对应起来.以JsonLineMsg实体类代表对应的一帧数据: package tsdb.entity; import lombok.AllArgsC

  • mybatis中字段名与关键字相同问题

    目录 mybatis中字段名与关键字相同 mybatis关键字于字段名冲突 解决方案 总结 mybatis中字段名与关键字相同 在字段上添加反双引号,就是~键: 如图: mybatis关键字于字段名冲突 SHR在我们表里是审核人,但在mybatis字段是表示>>的意思,产生冲突 报错信息: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderExcepti

  • java8实现list集合中按照某一个值相加求和,平均值等操作代码

    集合: List<User> user = new User(); user .stream().collect(Collectors.summingInt(User::getAge)) 参数类型: summarizingDouble 统计数据(double)状态, 其中包括count min max sum和平均值 summarizingInt 统计数据(int)状态, 其中包括count min max sum和平均值 summarizingLong 统计数据(long)状态, 其中包括c

  • 使用MyBatis返回其它类对象的字段处理

    目录 MyBatis返回其它类对象的字段处理 需求 此时两种处理方式 MyBatis返回自定义字段接收 1.有时候需要查询的返回的结果不是javaBean的属性 2.DAO接口 3.后台取值 MyBatis返回其它类对象的字段处理 需求 在A.xml中联合查询A表所有字段及B表中的nikename字段,B表和A表没有关系但是和C表有关联,C表和A表有关联,其处理方式如下 1.sql先写好,比如当前只做A表所有符合条件的查询 SELECT * FROM sce_salegoods 2.取sce_u

随机推荐