Mybatis-Plus sum聚合函数及按日期查询并求和的方式详解
作者:m0_55070913 时间:2022-07-09 12:58:07
一.Mybatis-Plus——sum聚合函数
//总收益
Order order =new Order();
QueryWrapper<Order> queryWrapper = new QueryWrapper<Order>();
queryWrapper.select("sum(price) as sumAll");
Order ord= orderService.getOne(queryWrapper);
//注意,空指针问题
if (ord== null){
order.setSumAll(Double.valueOf(0)) ;
}else{
order.setSumAll(ord.getSumAll());
}
对应的sql语句是
SELECT sum(price) as sumAll FROM t_order
注意:as后面的变量要与实体类中声明的一致, @TableField(exist = false)表示表中并没有相应的字段与之对应。
(queryWrapper的getOne()方法:根据 Wrapper,查询一条记录)
/**
* 总收益
*/
@TableField(exist = false)
private Double sumAll;
二.按日期查询并求和(mybatis及mybatisPlus两种方式)
举例: 今日总收益
1.mybatisPlus,只需在controller层进行代码书写
//今日总收益
QueryWrapper<Order> queryWrapper = new QueryWrapper<Order>();
queryWrapper.select("sum(price) as sumByToday ");
queryWrapper.eq("TO_DAYS(create_time)","TO_DAYS(NOW())");
Order order =new Order();
if (orderService.getOne(queryWrapper) == null){
order.setSumByToday(Double.valueOf(0)) ;
}else{
order.setSumByToday(orderService.getOne(queryWrapper).getSumByToday());
}
2.mybatis (自己定义sql,简单灵活,但代码量相较于mybatisPlus多了几行)
controller层
//今日总收益
Double sumByToday =orderService.sumByToday();
if (sumByToday == null){
sumByToday = Double.valueOf(0);
}
order.setSumByToday(sumByToday);
service层
Double sumByToday();
service实现层
@Override
public Double sumByToday(){
return orderMapper.sumByToday();
}
mapper层
Double sumByToday();
xml文件
<select id="sumByToday" resultType="java.lang.Double">
select sum(price) as sumByToday from t_order
where TO_DAYS(create_time) = TO_DAYS(NOW())
</select>
3.bug记录,错误信息如下:
Mapper method 'mapper.OrderMapper.sumByToday attempted to return null from a method with a primitive return type (double).
查询出来的值为空,它的数据为null而不是double数据。
解决方法:
方法1:实体类中用来接收“今日总收益“的变量,类型变成封装类Double(Integer、Long,而不是double。
方法2:xml文件中的sql语句变成
select IFNULL(sum(price),0) as sumByToday
from t_order
where TO_DAYS(create_time) = TO_DAYS(NOW())
IFNULL(expression, value):如果第一个参数的表达式 expression 为 NULL,则返回第二个参数的备用值。
来源:https://blog.csdn.net/m0_55070913/article/details/123664970
标签:Mybatis-Plus,sum,聚合函数,日期查询
0
投稿
猜你喜欢
java之assert关键字用法案例详解
2022-07-10 23:01:32
JAVA使用POI(XSSFWORKBOOK)读取EXCEL文件过程解析
2023-03-01 16:36:39
Java(TM) Platform SE binary 打开jar文件的操作
2021-10-02 00:08:12
浅谈java的守护线程与非守护线程
2023-11-25 06:50:23
C#中List集合使用Max()方法查找到最大值的实例
2023-12-01 08:03:32
java为何不能多继承的原因详解
2023-10-12 04:45:00
三步轻松搭建springMVC框架
2023-02-01 05:38:34
Java基础知识之Java语言概述
2023-11-28 04:36:35
Spring Boot中使用Redis实战案例
2021-06-03 04:17:04
Spring boot+beetl+i18n国际化处理的方法
2023-07-22 00:36:31
Java reservedcodecachesize虚拟机参数案例详解
2022-03-15 12:18:48
java解析Excel的方法(xls、xlsx两种格式)
2021-10-12 16:29:39
SpringBoot使用jasypt加解密密码的实现方法(二)
2021-10-15 14:16:46
详解Java注解知识点
2021-06-24 18:39:12
java递归实现汉诺塔步骤介绍
2022-03-03 09:44:17
Java继承Thread类创建线程类示例
2023-08-04 20:27:08
Java获取彩色图像中的主色彩的实例代码
2021-10-16 01:09:39
log4j2日志异步打印(实例讲解)
2023-11-12 09:02:13
Spring容器的创建过程之如何注册BeanPostProcessor详解
2022-02-17 08:39:09
java自定义ClassLoader加载指定的class文件操作
2022-03-16 16:19:07