mybatis中的count()按条件查询方式

目录
  • mybatis count()按条件查询
    • 1、sql count()函数
    • 2、mybatis中count()按条件查询
  • 在查询时使用count(*),total为1,结果为0

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没有关系。

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

时间: 2022-01-14

Mybatis之Select Count(*)的获取返回int的值操作

本文将介绍,SSM中mybatis 框架如何获取Select Count(*)返回int 的值. 1. Service 代码: public boolean queryByunitclass(String unitclass, String unitsubclass) throws Exception { int count = matceMachineUnitMapper.queryByunitclass(unitclass, unitsubclass); if (count > 0) { r

Mybatis 实现动态组装查询条件,仿SQL模式

目的: 以前比较习惯使用Hibernate,后来觉得mybatis不能按我想要的自动组装为SQL查询条件,所以提供该工具类: 效果图: 如图所示,根据条件自动组装查询条件,下面来说一下实现方法: 1. ServiceImpl书写注意项 Page<SysLogin> resultPage = null; try { PageHelper.startPage(pager.getCurrentPage(), pager.getPageSize()); // 判断是否有分页 if (ObjectHel

Mybatis&nbsp;Select&nbsp;Count(*)的返回值类型介绍

目录 Select Count(*)的返回值类型 返回Count(*)的整数值 Select Count(*)的返回值类型 <select id="queryAlarmStatisticalAnalysis4System" parameterType="AlarmMailSendLog" resultType="java.lang.Integer"> select count(*) from mon_alarm_mail_send_l

ASP中获得Select Count语句返回值的方法

我们一般统计数据库记录时会用到Select Count(*)语句,当我们使用SQL Server的查询分析器时,直接输入Select Count(*) From 表名即会统计出该表中有几条记录,可是我们用ASP来实现时该怎么返回值呢?即如何输出统计出来的记录总数呢?请接着往下看. 其实我们只要给SQL语句的查询结果取个别名即可解决问题,然后用ASP语句输出这个别名即可,相关代码如下: 复制代码 代码如下: Set rs=conn.Execute("Select Count(*) As 'Tota

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

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

C# WebApi 接口返回值不困惑:返回值类型详解

前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧.之前分享过一篇C#进阶系列--WebApi接口传参不再困惑:传参详解,这篇博文内容本身很基础,没想到引起很多园友关注,感谢大家的支持.作为程序猿,我们都知道参数和返回值是编程领域不可分割的两大块,此前分享了下WebApi的传参机制,今天再来看看WebApi里面另一个重要而又基础的知识点:返回值.还是那句话:本篇针对初初使用WebApi的同学们,比较基础,有兴趣的且看看.

php mysqli查询语句返回值类型实例分析

本文实例分析了php mysqli查询语句返回值类型.分享给大家供大家参考,具体如下: <?php $link = new mysqli('localhost', 'root','123','test'); $sql = 'select uName from userInfo'; $a = $link->query($sql); echo '<pre>'; echo '有结果集<br>'; var_dump($a); echo '</pre>'; $sql

PowerShell函数指定返回值类型实例

本文介绍在自定义PowerShell函数时,如何设置返回值的数据类型.PowerShell函数的返回值可以有类型,也可以没有类型,跟输入参数相似.     定义PowerShell函数的返回值类型,要使用OutputType这个指令.将这个指令放到param指令之前即可实现对返回值类型的定义. 复制代码 代码如下: function Test-IntelliSense {     [OutputType('System.DateTime')]     param()     return Get

ASP.NET Core中的Action的返回值类型实现

在Asp.net Core之前所有的Action返回值都是ActionResult,Json(),File()等方法返回的都是ActionResult的子类.并且Core把MVC跟WebApi合并之后Action的返回值体系也有了很大的变化. ActionResult类 ActionResult类是最常用的返回值类型.基本沿用了之前Asp.net MVC的那套东西,使用它大部分情况都没问题.比如用它来返回视图,返回json,返回文件等等.如果是异步则使用Task. public class Te

Array.slice()与Array.splice()的返回值类型

最近做个练习,用到Array.slice()和Array.splice(),以前没有注意其返回值类型 Array.slice()返回Array -- 一个由原始数组中某一范围的元素构成的数组. Array.splice()返回Array -- 包含从原始数组中删除的元素的一个数组. 返回的是一个数组,用typeof()看一下是object,这没错!需要提醒大家的是: 当数组元素是数字时,用Array.slice()和Array.splice()取其中某个元素进行大小比较,可得要注意,必须转换 类

Ajax返回值类型与用法实例分析

本文实例讲述了Ajax返回值类型与用法.分享给大家供大家参考,具体如下: Ajax返回值类型主要有XML类型和文本类型,其中文本类型又可以分为HTML.json类型等. 1.返回值之XML类型 如果服务器的响应头中Content-type的内容为text/xml时,此时XMLHttpRequest对象的responseXML属性才能使用. 2.返回值之文本类型 文本类型主要分为Html类型和json类型. (1)Html类型 使用场景:一般返回需要重复复杂的操作.比如,页面使用ajax从服务器请

Java方法签名为何不包含返回值类型

看下官方说明: 意思是java方法签名包含两个要素:方法名称和参数列表.即不包括返回值类型. 那为什么不能包含返回值类型呢? 看一下如下两段代码示例. 示例一: public String m123(int i) { return "456"; } public int m123(int i) { return 123; } // 为什么不能包含返回值的原因:编译器无法从所有的上下文中确定重载版本 // 因此为了避免"模棱两可"的局面, java方法签名中不包含返回

mybatis中&lt;if&gt;标签bool值类型为false判断方法

昨天实现一个功能,根据文章的id或者别名查找文章. 起初采用mybatis的Example进行查询,对参数artName进行判断,如果是纯数字就byId查询,否则就by别名.由于查询文章的同时,需要关联查询文章分类标签,所以选择采用select语句映射的方式查询,但又不想写两个查询方法,就使用了mybatis中动态sql. /** * 查询文章 * @param artName id 或 别名 * @param byId 如果是 true 则按照id查询 * 否则 按照别名查询 * @retur