mybatis中的count()按条件查询方式
作者:光阴不负卿 发布时间:2022-06-30 06:04:29
mybatis count()按条件查询
1、sql count()函数
count()函数返回匹配指定条件的行数。
sql count(column_name)语法:
count(column_name)函数返回指定列的值的数目(null)不计入。
select count(column_name) from table_name
sql count(*)语法:
count(*)函数返回表中的记录数。
select count(*) from table_name
sql count(distinct column_name)语法:
count(distinct column_name)函数返回指定列的不同值的数目。
select count(distinct column_name) from table_name
比如下面这张表:table_aid
+-----+---------+-------+------------+
| aid | site_id | count | date |
+-----+---------+-------+------------+
| 1 | 1 | 45 | 2016-05-10 |
| 2 | 3 | 100 | 2016-05-13 |
| 3 | 1 | 230 | 2016-05-14 |
| 4 | 2 | 10 | 2016-05-14 |
| 5 | 5 | 205 | 2016-05-14 |
| 6 | 4 | 13 | 2016-05-15 |
| 7 | 3 | 220 | 2016-05-15 |
| 8 | 5 | 545 | 2016-05-16 |
| 9 | 3 | 201 | 2016-05-17 |
+-----+---------+-------+------------+
执行sql语句:
//特定条件下指定列的数目
select count(count) as nums from table_aid
where site_id = 3
//输出结果:nums值为:521
//计算table_aid中总记录数
select count(*) as nums from table_aid
//输出结果:nums值为:9
//指定列的不同值的数目
select count(distinct site_id) as nums from table_aid
//输出结果:nums值为:5
2、mybatis中count()按条件查询
任务描述:数据库其中有两个字段分别为
1、站点:station、
2、状态:status,status的取值为success或者fail。
现在需求为将记录按站点分组,且要统计出其中的status为success的数量和为fail的数量。
mybatis代码:
<resultMap id="GroupBaseResultMap" type="java.util.Map">
<result column="station" jdbcType="VARCHAR" property="station" />
<result column="successNum" jdbcType="VARCHAR" property="successNum" />
<result column="totalNum" jdbcType="VARCHAR" property="totalNum"/>
</resultMap>
<!--任务统计:按站点 sum(if(type="fail",status,0))-->
<select id="selectGroupByStation" resultMap="GroupBaseResultMap">
select rfr.station, count(rfr.status='success' or null) as successNum, count(rfr.status='fail' or null) as failNum, count(1) as totalNum
from rec_file_report rfr
GROUP BY station
</select>
测试结果为:
{
"failNum": 2,
"totalNum": 73,
"successNum": 71,
"station": "admin"
},
{
"failNum": 26,
"totalNum": 521,
"successNum": 495,
"station": "changjiu.shao@wisdom56.com"
}
在查询时使用count(*),total为1,结果为0
在使用count(*)查询时,发现在console打印的mybatis日志返回的total为1,但是实际情况应该是0,返回的数据也是0
<== Total: 1
最后才发现,在使用count(*)查询时,返回的total并不是查询结果,即使为0,返回的也是1,跟total没有关系。
来源:https://blog.csdn.net/li_w_ch/article/details/109752271


猜你喜欢
- java HashMap多层嵌套package chapter12;import java.util.HashMap;public clas
- Java try()语句实现try-with-resources异常管理机制java7 新增特性,对于try语句块中使用到的资源,不再需要手
- AntPathMatcher前言(1)SpringMVC的路径匹配规则是依照Ant的来的,实际上不只是SpringMVC,整个Spring框
- 本文实例展示了C#实现Datatable排序的方法,分享给大家供大家参考之用。具体方法如下:一般来说,在C#中要对Datatable排序,可
- 编写上位机与下位机通信的时候,涉及到协议的转换,比较多会使用到二进制。传统的方法,是将数据整体获取到byte数组中,然后逐字节对数据进行解析
- 本文实例为大家分享了Android自定义View实现圆环进度条的具体代码,供大家参考,具体内容如下效果展示动画效果View实现1.底层圆环是
- 本文实例为大家分享了Android下载进度监听和通知的具体代码,供大家参考,具体内容如下下载管理器关于下载进度的监听,这个比较简单,以apk
- 在用C#开发Web应用时有个痛点,就是本机用VS开启Web应用调试时外部机器无法访问此Web应用。这里将会介绍如何通过设置允许局域网和外网机
- C#程序自删除核心实现方法就是调用 cmd 传入命令行,等待几秒之后删除文件;应用程序在运行时,是不能将 exe 文件进行删除的。但是可以将
- 前提前段时间在做一个对外的网关项目,涉及到加密和解密模块,这里详细分析解决方案和适用的场景。为了模拟真实的交互场景,先定制一下整个交互流程。
- 效果视频简述本Demo采用Hilt+Retrofit+Paging3完成,主要为了演示paging3分页功能的使用,下列为Demo所需要的相
- 本文实例讲述了Java基于命令模式实现邮局发信功能。分享给大家供大家参考,具体如下:一. 模式定义命令模式,将来自客户端的请求封建为一个对象
- 本文实例为大家分享了Unity3D实现批量下载图片功能的具体代码,供大家参考,具体内容如下下一篇文章试试用线程下载代码如下using Sys
- 概述在移动应用开发中,消息推送可以说是一项非常重要的功能,它能够起到提醒或者唤醒用户的作用,同时也是产品运营人员更高效地实现运营目标的重要手
- Swing 程序用JFrame 对象实现了它们的窗口。JFrame 类是AWT Frame 类的一个子类。它还加入了一些Swing 所独有的
- 概述:Spring Boot 2.0相对于之前的版本,变化还是很大的。首先对jdk的版本要求已经不能低于1.8,其次依赖的spring的版本
- 一丶先引入上传下载的lib二丶上传的的servletpackage com.test.action;import java.io.File;
- C#中添加窗口的步骤:1是添加窗口。2是在程序中使用new实例化窗口类对象,并显示窗口。1 添加窗口在解决方案管理器->主项目名称-&
- webflux过滤器(RouterFunction实现)相关类与接口HandlerFiterFunction@FunctionalInter
- 本文实例为大家分享了Android九宫格展示的具体代码,供大家参考,具体内容如下(设置的有最少连几个和最大连几个)MainActivityp