Java项目查询统计表中各状态数量

简介: where中按需求加条件,resultType中使用HashMap时,可能展示时的顺序与查询结果顺序不同,因此使用LinkedHashMap。表中设计2个状态字段,每个字段有3种状态,统计这6个状态各自的数量。框架:SpringBoot,Mybatis;以下仅设计为最简单的使用方式,有具体需求按需求增加逻辑。效果达到了,接下来就是在项目中实际使用。在自定义sql的xml中代码如下。sql查询语句及结果如图。

框架:SpringBoot,Mybatis;数据库:MySQL
表中设计2个状态字段,每个字段有3种状态,统计这6个状态各自的数量
image.png

sql查询语句及结果如图
image.png

SQL:

SELECT 
SUM(CASE WHEN A=0 THEN 1 ELSE 0 END) AS 'A0', 
SUM(CASE WHEN A=1 THEN 1 ELSE 0 END) AS 'A1', 
SUM(CASE WHEN A=2 THEN 1 ELSE 0 END) AS 'A2',
SUM(CASE WHEN B=0 THEN 1 ELSE 0 END) AS 'B0', 
SUM(CASE WHEN B=1 THEN 1 ELSE 0 END) AS 'B1',  
SUM(CASE WHEN B=2 THEN 1 ELSE 0 END) AS 'B2'   
FROM test

效果达到了,接下来就是在项目中实际使用

以下仅设计为最简单的使用方式,有具体需求按需求增加逻辑
Controller:

    @GettMapping("/findStatusCount")
    public List<Object> findStatusCount(){
   
   
        return statusCountService.findStatusCount();
    }

Service:

    List<Object> findStatusCount();

Service实现类:

    @Override
    public List<Object> findStatusCount() {
   
   
        return statusCountMapper.selectStatusCount();
    }

Mapper:

    List<Object> selectStatusCount();

在自定义sql的xml中代码如下。
where中按需求加条件,resultType中使用HashMap时,可能展示时的顺序与查询结果顺序不同,因此使用LinkedHashMap

    <select id="selectStatusCount" resultType="java.util.LinkedHashMap">
        select
        SUM(CASE WHEN A=0 THEN 1 ELSE 0 END) AS 'A0', 
        SUM(CASE WHEN A=1 THEN 1 ELSE 0 END) AS 'A1', 
        SUM(CASE WHEN A=2 THEN 1 ELSE 0 END) AS 'A2',
        SUM(CASE WHEN B=0 THEN 1 ELSE 0 END) AS 'B0', 
        SUM(CASE WHEN B=1 THEN 1 ELSE 0 END) AS 'B1',  
        SUM(CASE WHEN B=2 THEN 1 ELSE 0 END) AS 'B2'   
        FROM test
        <where>……</where>
    </select>

结束~

目录
相关文章
|
24天前
|
IDE Java 开发工具
Java系统中的错误码设计问题之为Java项目中的错误消息提供国际化支持如何解决
Java系统中的错误码设计问题之为Java项目中的错误消息提供国际化支持如何解决
30 0
|
27天前
|
Java 应用服务中间件 Windows
【应用服务 App Service】App Service 中部署Java项目,查看Tomcat配置及上传自定义版本
【应用服务 App Service】App Service 中部署Java项目,查看Tomcat配置及上传自定义版本
|
21天前
|
jenkins Java Shell
jenkins学习笔记之十三:配置SonarScanner扫描Java项目
jenkins学习笔记之十三:配置SonarScanner扫描Java项目
|
25天前
|
Java 开发工具 git
【Azure 应用服务】本地Git部署Java项目到App Server,访问无效的原因
【Azure 应用服务】本地Git部署Java项目到App Server,访问无效的原因
|
27天前
|
JavaScript Java Python
【Azure 应用服务】在Azure App Service for Windows 中部署Java/NodeJS/Python项目时,web.config的配置模板内容
【Azure 应用服务】在Azure App Service for Windows 中部署Java/NodeJS/Python项目时,web.config的配置模板内容
|
27天前
|
存储 Java API
【Azure Developer】通过Azure提供的Azue Java JDK 查询虚拟机的CPU使用率和内存使用率
【Azure Developer】通过Azure提供的Azue Java JDK 查询虚拟机的CPU使用率和内存使用率
|
28天前
|
存储 Java 编译器
掌握这些技巧,让Java中的条件语句if-else和switch为你的项目加分!
在软件工程中,Java的if-else和switch语句是控制流程的关键。通过案例分析,本文展示如何优化这些语句以提升代码质量和性能。首先,重构if-else结构,使用Map存储会员等级与折扣的映射,提高代码可读性和扩展性。其次,利用switch语句处理有限的选择,并通过策略模式进一步增强代码的灵活性。最后,根据选项数量和数据类型的不同,合理选择if-else或switch以达到最优性能。掌握这些技巧,将助力开发者写出更高效的Java代码。
29 0
|
29天前
|
数据采集 SQL 前端开发
Java SpringBoot自动化网页爬虫项目
这是一个基于Java Spring Boot的自动化网页爬虫平台,采用图形化界面定义爬虫流程,无需编写代码。该平台高度灵活且可配置,支持Xpath、JsonPath、CSS选择器及正则表达式等多种提取方式,兼容JSON、XML和二进制格式,并支持通过代理服务器访问。它还具备自动管理Cookie、保存数据至数据库或文件、自定义函数和SQL脚本等功能,同时集成了任务监控和日志记录系统。此外,平台支持HTTP接口调用和动态网页抓取,可通过Selenium模拟真实浏览器行为。用户可通过直观的操作界面轻松完成复杂的数据抓取任务。
|
弹性计算 数据可视化 关系型数据库
阿里云服务器部署Java Web项目和连接MySQL数据库全流程
阿里云服务器部署Java Web项目和连接MySQL数据库全流程
5567 0
阿里云服务器部署Java Web项目和连接MySQL数据库全流程
|
4月前
|
存储 Java Maven
使用 nohup 部署和后台运行Java 项目
使用 nohup 部署和后台运行Java 项目
351 1
使用 nohup 部署和后台运行Java 项目