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>
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
mybatis sum(参数) 列名作为参数的问题
目录 sum(参数) 列名作为参数 注意事项 mybatis注解sql sum(参数)传参写法 sum(参数) 列名作为参数 项目中有很多个字段,当字段为空的时候,求该列的平均值并赋值给该字段.如: id name age 当我需要插入一条数据的时候,这条数据的age为空,那么需要先从数据库查询age的平均值,然后赋值给当前的数据.当字段很多的时候就需要列名作为参数查询了 mapper.xml <select id="getGtAvg" parameterType
-
Mybatis中传递多个参数的4种方法总结
前言 现在大多项目都是使用Mybatis了,但也有些公司使用Hibernate.使用Mybatis最大的特性就是sql需要自己写,而写sql就需要传递多个参数.面对各种复杂的业务场景,传递参数也是一种学问. 下面给大家总结了以下几种多参数传递的方法. 方法1:顺序传参法 #{}里面的数字代表你传入参数的顺序. 这种方法不建议使用,sql层表达不直观,且一旦顺序调整容易出错. 方法2:@Param注解传参法 #{}里面的名称对应的是注解 @Param括号里面修饰的名称. 这种方法在参数不多的情况还
-
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
随机推荐
- 详解Linux 主机网络接入配置
- 基于jquery实现一张图片点击鼠标放大再点缩小
- jQuery+JSON+jPlayer实现QQ空间音乐查询功能示例
- python通过socket查询whois的方法
- IE6、IE7、Firefox javascript 无提示关闭窗口的代码
- php格式化日期实例分析
- jsp中EL表达式获取数据
- MySQL 5.7.18 免安装版配置教程
- js简单判断移动端系统的方法
- Nodejs初级阶段之express
- CentOS7按时间段截取指定的Tomcat日志到指定文件的方法
- java字符串反转示例分享
- Linux VPS备份教程 数据库/网站文件自动定时备份
- jquery中ready()函数执行的时机和window的load事件比较
- Js放到HTML文件中的哪个位置有什么区别
- IE:重新安置临时文件夹
- java 高并发中volatile的实现原理
- python实现协同过滤推荐算法完整代码示例
- java递归读取目录下所有文件的方法
- 详解C++中的内存同步模式(memory order)