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

标签:mybatis,count,条件,查询
0
投稿

猜你喜欢

  • 将文件夹下所有文件输出到日志文件中 c#递归算法学习示例

    2023-04-08 20:36:22
  • Java读取json数据并存入数据库的操作代码

    2023-09-23 06:00:57
  • Java 静态代理与动态 代理解析

    2023-08-22 17:18:19
  • Maven插件的安装及使用

    2022-04-05 04:38:30
  • Java 设计模式中的策略模式详情

    2023-08-06 03:45:11
  • 重新认识Java的System.in

    2023-08-24 01:55:18
  • Struts2实现多文件上传功能

    2021-11-01 13:50:25
  • java使用RandomAccessFile类基于指针读写文件实例代码

    2021-07-29 17:45:45
  • Java多线程 两阶段终止模式Two-Phase Termination Patter

    2023-11-29 04:47:04
  • Java反射概念与使用实例代码

    2022-02-24 23:55:40
  • Java聊天室之实现运行服务器与等待客户端连接

    2023-11-23 08:16:17
  • MyBatis-Plus 自定义sql语句的实现

    2022-12-24 23:16:16
  • JavaWeb登录界面登录失败在同一页面进行提示的解决

    2023-11-26 15:51:34
  • Spring的@Autowired加到接口上但获取的是实现类的问题

    2023-08-23 21:32:21
  • mybatis原理概述入门教程

    2023-10-08 13:10:57
  • 分析JAVA中几种常用的RPC框架

    2022-12-11 03:54:18
  • 解决RestTemplate 请求url中包含百分号 会被转义成25的问题

    2022-11-01 22:59:51
  • Java一个简单的红包生成算法

    2023-12-12 10:56:50
  • SpringBoot整合Zookeeper详细教程

    2022-07-24 11:33:09
  • 详解SpringBoot项目整合Vue做一个完整的用户注册功能

    2022-02-13 21:46:35
  • asp之家 软件编程 m.aspxhome.com