mybatis-plus使用sum,count,distinct等函数的方法

MyBatis-Plus中优雅实现DISTINCT查询的三种方案与性能优化 在数据库查询中,DISTINCT关键字用于去除结果集中的重复记录,其原理是通过排序或哈希算法对指定字段进行去重处理。这一功能在数据统计、报表生成等场景中具有重要价值,尤其在需要获取唯一值列表时不可或缺。在Java开发领域,MyBatis-Plus作为流行的ORM框架,其LambdaQueryWrapper提供了类型安全的查询构造方式,但在处理DISTINCT时存在API限制。本文针对这一技术痛点,深入探讨了如何在保持类型安全的前提下,通过apply方法注入SQL片段、自定义SQL注解等方案实现优雅的去重查询 阅读详情
AI摘要

文章介绍了如何利用Mybatis-Plus框架进行复杂查询,包括计算不同用户名的数量(使用COUNT和DISTINCT),以及通过Lambda表达式和QueryWrapper设置条件(如IS_DELETED和IS_ENABLED)。此外,还展示了如何选择特定字段(如user_id和user_name)并进行聚合函数(如COUNT和SUM)操作,以及将查询结果映射到Map或实体类中。

mybatis-plus使用sum,count,distinct等函数的方法

通过mybatis-plus实现以下sql查询

SELECT COUNT(DISTINCT user_name)
FROM user_info
WHERE is_deleted=0 AND is_enabled = 1
mybatis-plus实现
int count = this.count(Wrappers.<User>query()
                .select("DISTINCT user_name")
                .lambda()
                .eq(User::getIsEnabled, 1));

//或者
int count1 = this.count(Wrappers.<User>query()
                .select("DISTINCT user_name")
                .eq("is_enabled", 1));
QueryWrapper<User> wrapper1 = new QueryWrapper<>();
        wrapper1.select("distinct user_id,user_name ")
                .in("user_id","1,2,3");
List<User> list1 = this.list(wrapper1);
QueryWrapper<User> wrapper1 = new QueryWrapper<>();
        wrapper1.select("count(user_id) as userids",
                "sum(age) as ages")
                .in("user_id","1,2,3");
Map<String, Object> map = this.getMap(wrapper1);
map.get("userids");
//也可以将map转换为实体类,只不过字段需要对应
JSON.parseObject(JSON.toJSONString(map), ScoreData.class);
spring boot集成mybatis-plus——Mybatis Plus 查询数据(图文讲解) Mybatis Plus 查询数据(图文讲解) 更新时间 2023-01-03 16:07:12 大家好,我是小哈。 本小节中,我们将学习如何通过 Mybatis Plus 查询数据库表中的数据。 表结构 在前面小节中,我们已经定义好了一个用于测试的用户表, 执行脚本如下: DROP TABLE IF EXISTS user; CREATE TABLE `user` ( `id` bi... 阅读详情

相关推荐

MyBatis-Plus聚合查询分页排序实战:LambdaQueryWrapper的边界与解决方案

在数据库查询中,GROUP BY与聚合函数是实现数据统计的核心技术,常用于生成报表、分析业务指标。其原理是通过分组将数据行聚合成摘要行,并计算总和、计数等聚合值。这项技术的价值在于能从海量数据中快速提取关键统计信息,支撑决策分析。在Java开发中,ORM框架如MyBatis-Plus的LambdaQueryWrapper,通过类型安全的Lambda表达式简化了条件构造,提升了开发效率。然而,当涉及**聚合查询**并需要结合**分页排序**时,直接使用会遇到挑战,例如分页插件自动生成的COUNT查询在GROU

weixin_30843605的博客 395

mybatis-plus使用distinct

distinct是sql中的去重语法,有时候我想在mybatis-plus中使用distinct 该怎么办呢? 给出一个去重加统计的案例,供大家参考: int userCount = logRecordService.count(new QueryWrapper<LogRecordDO>().select("DISTINCT user_id").lambda().eq(LogRecordDO::getProjectId, s.getId())); 解析成的sql: SELECT CO

lsqingfeng的博客 3万+

别再写原生SQL了!用MyBatis-Plus的QueryWrapper搞定复杂统计查询(含CASE WHEN和聚合函数)

本文详细介绍了如何利用MyBatis-Plus的QueryWrapper替代原生SQL处理复杂统计查询,包括聚合函数、CASE WHEN条件判断等高级特性。通过实战示例展示了selectMaps方法的应用,帮助Java开发者提升查询效率与代码可维护性,适用于数据看板、报表分析等场景。

weixin_42522552的博客 340

使用Mybatis-plus实现查询数据去重

返回结果按字段的属性进行定义,我是int类型所以就使用List<Integer>的集合返回。直接使用最原始的方式进行获取数据这样获取的数据很干净也就只有product_id。

qq_57999510的博客 2万+

Java CRM系统从表设计到权限部署:Spring Boot + MyBatis Plus实战避坑

客户关系管理(CRM)是企业信息化中典型的业务系统,以客户、联系人与跟进记录为核心对象,天然适合用 Java 面向对象建模。通过 Spring Boot 整合 MyBatis Plus 与 MySQL,能高效完成单表 CRUD、逻辑删除和自动代码生成;而权限设计作为系统底线,常借助 QueryWrapper 封装行级数据权限,避免每处 Service 手写过滤条件。此类方案不仅满足高校毕业设计的技术演示需求,也被中小团队用于自建客户管理工具。落地时需注意外置 Tomcat 的 war 包配置、绝对路径文件上

weixin_34161029的博客 408

SpringBoot+Vue全栈实战:大学生体质检测管理系统设计与实现

在软件开发领域,前后端分离架构已成为构建现代Web应用的主流范式。其核心原理在于将用户界面与业务逻辑解耦,通过RESTful API进行通信,从而提升开发效率和系统可维护性。这种架构的技术价值在于支持团队并行开发、技术栈灵活选型以及更好的性能扩展性,广泛应用于各类后台管理系统和企业级应用。本文聚焦于一个典型的B端后台管理系统——大学生体质检测平台,深入探讨如何运用SpringBoot和Vue.js技术栈,结合RBAC权限模型与MyBatis-Plus数据层框架,实现从数据录入、智能计算到多维度统计分析的全流

weixin_33928137的博客 491

# mybatis-plus使用sum,,count,distinct等函数的方法

# mybatis-plus使用sum,,count,distinct等函数的方法

weixin_47332903的博客 4666

Mybatis-plus查询去重方法[项目代码]

本文介绍了使用Mybatis-plus实现查询数据去重的三种方法。第一种是通过自定义Mapper方法,直接返回去重后的单个字段集合;第二种是利用QueryWrapper类,在select语句中直接添加DISTINCT关键字实现去重;第三种是使用LambdaQueryWrapper查询后,再通过stream流的distinct()方法进行去重处理。文章详细说明了每种方法的实现步骤,并提供了示例代码,帮助开发者根据实际需求选择最适合的去重方式。

mybatis plus 分页插件 排序报JSQLParserException记录

1、错:group_concat(DISTINCT oad.brand SEPARATOR ",") 对:group_concat(DISTINCT oad.brand SEPARATOR ',') 最后的分割符只能使用单引号 2、错:sum(table.x==0) as s 对:sum(if(table.x==0,1,0)) as s sum中写条件时,需使用if表达完整,不能简写 ...

sinat_33472737的博客 915

【python3.7】解决报错 error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++

解决pip安装py7zr遇到的报错问题。

水w的博客 3937

LaTex的下载与安装(2024小白+windows系统)

本文主要介绍了Latex的下载与安装,还包括安装过程中遇到的小问题的解决。

m0_53096519的博客 2万+

解决SpringBoot+Druid+Mybatis Plus 执行MySQL批量插入,更新 报错的问题

项目实际开发中,使用到了MySQL批量插入的语法,在MySQL中执行成功后,移植到项目时发生了问题,语句如下: REPLACE INTO table1( id, works_fusion_id, statistics_date, chapter_number, new_chapter, works_hot, works_like_number, ...

技术博客 6684

T-Box功能详解及应用

T - BOX,其全称为 Telematics Box,作为远程 / 车载通信模块,是一款集车身网络与无线通讯功能于一体的智能终端设备。它充当了多媒体车机与 TSP(汽车远程服务提供商)以及互联网之间的无线路由器角色,为用户创造了远程访问的可能。用户借助T - BOX能够对车辆配备的各个 ECU(电子控制单元)进行远程操控,包括远程启动或停止发动机开启或关闭空调天窗后备箱门车门,以及实现闪灯鸣笛等功能。

wgl110110的博客 5640

MyBatis笔记-常用操作

一、if-else写法 <foreach collection="list" index="index" item="item" separator=","> <trim prefix="(" suffix=")" suffixOverrides=","> <choose> <when test="item.id != null and item.id !=''">#{item....

Bonrui编程路 389

手把手教你用RC桥式振荡器生成1Hz-1MHz正弦波(附完整电路图)

本文详细介绍了如何从零构建RC桥式振荡器,实现1Hz-1MHz正弦波的生成。通过核心元件选型、参数设计、电路搭建与优化等步骤,帮助读者掌握振荡器的工作原理和实战技巧。特别适合电子实验和信号处理领域的初学者和工程师,附完整电路图和常见问题解决方案。

weixin_30338481的博客 466

IMX335摄像头原理图设计,已量产

从工程组织上看,IMX335 模组和 IMX415 模组属于同一类产品:核心矛盾不是外设多,而是高速图像链路、电源域和调试接口要同时兼顾。ATK-MCIMX335 这张图的结构也很直接,三路 LDO、本地 24MHz 可选时钟、4-lane MIPI 数据对和一组主板侧标准接口,构成了一张非常典型的量产摄像头子板。

不脱发的程序猿 435

SpringBoot2+Vue3图书馆疫情管理系统开发实战

现代Web开发中,前后端分离架构已成为主流技术方案。SpringBoot作为Java生态中最流行的微服务框架,与Vue3的组合式API前端架构结合,能够构建高性能的全栈应用。通过MyBatis-Plus简化数据库操作,配合MySQL8.0的JSON支持和窗口函数等高级特性,开发者可以高效实现复杂业务逻辑。这种技术栈特别适合开发疫情管理系统这类需要实时数据处理和高并发支持的场景。本文以图书馆管理系统为例,展示了如何利用SpringBoot2+Vue3技术整合解决座位预约消毒联动、健康信息核验等疫情期间的特殊需

weixin_30570101的博客 276

YOLOv11改进策略【Neck】| arXiv 2025 分层多头注意力HMHA 子空间拆分提多样 + 通道重排降冗余,强化目标检测精度

HMHA(Hierarchical Multi-Head Attention,分层多头注意力)旨在解决传统多头注意力(MHA)在图像恢复任务中的核心缺陷——特征冗余。传统MHA将通道均匀拆分给各个头,导致不同头学习的子空间信息相似,进而出现多头关注同一区域、忽略退化区域修复的问题,限制了模型的特征表达能力。HMHA通过“分层子空间拆分+通道重排序”策略,让每个头学习差异化、互补的上下文特征,从根源上缓解冗余,提升图像恢复任务中对复杂退化场景的特征捕捉能力。

Limiiiing的博客 778

mysqlplus 批量插入_解决SpringBoot+Druid+Mybatis Plus 执行MySQL批量插入,更新 报错的问题...

项目实际开发中,使用到了MySQL批量插入的语法,在MySQL中执行成功后,移植到项目时发生了问题,语句如下:REPLACE INTO table1(id,works_fusion_id,statistics_date,chapter_number,new_chapter,works_hot,works_like_number,works_read_number,works_comment_num...

weixin_39727934的博客 888

华为OD机试双机位C卷-开心消消乐(Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【开心消消乐】,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为od机试 - 开心消消乐。

qq_45776114的博客 1512

【Matlab】matlab代码实现sph溃坝模拟

本文介绍了一个基于MATLAB的SPH溃坝模拟实现。代码使用平滑粒子流体动力学方法,通过建立1000个随机分布的粒子,计算粒子间的相互作用力来模拟流体运动。模拟过程包括初始化参数、粒子创建、密度压力更新、速度位置计算以及可视化展示。核心算法采用poly6Kernel和spikyKernelGradient函数处理粒子间作用力。该示例为二维简化模型,仅包含基本物理参数和计算流程,实际应用需进一步优化扩展。

unber的博客 206

09 AI 写 SQL:把需求描述丢进去,生产级SQL就出来了

本文分享了作者作为十年经验后端开发者,如何利用AI工具(如Cursor)高效处理SQL相关工作的实战经验。文章通过四个典型场景——业务需求翻译为SQL、慢查询优化、复杂统计报表编写、SQL与ORM代码互转——展示了AI在SQL编写中“更快、bug更少”的优势,并提供了具体的操作示例和优化建议,旨在帮助开发者将AI融入日常SQL工作流,提升开发效率。

weixin_42023666的博客 251

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java毕业设计:构建数据驱动的英语学习激励小程序,告别千篇一律

在软件工程实践中,构建一个具备完整业务闭环和数据驱动能力的系统,是衡量项目深度与价值的关键。其核心原理在于通过技术手段将用户行为、业务逻辑与数据分析串联,形成一个“发布-执行-反馈-优化”的可持续循环,而非简单的信息记录。这种模式的技术价值在于能够量化业务效果、驱动用户行为并持续优化产品,广泛应用于在线教育、用户增长和运营分析等场景。本文以Java技术栈为核心,结合Spring Boot、MySQL和Redis,深入探讨如何实现一个集学生打卡、智能批改与数据统计于一体的学习激励闭环。通过引入自动批改与积分奖

weixin_30832405的博客 327

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

从面试高频考点拆解“熟练掌握SQL”:窗口函数、慢查询与安全实践

SQL作为数据查询与处理的通用语言,早已不只是简单的增删改查,而是衡量工程师数据能力的基础标尺。理解其执行原理、索引机制与查询优化,是应对真实业务数据量增长的关键。从窗口函数实现分组排名,到慢SQL定位与执行计划分析,再到参数化查询抵御SQL注入,这些技术点正对应日常订单统计、用户复购率计算等高频场景。掌握这些能力,才能真正支撑起简历上“熟练掌握SQL”的承诺,也更符合当前技术岗位对实战型候选人的考察方向。

weixin_32821533的博客 219

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

基于Spring Boot的健身房管理系统:从架构设计到二次开发的Java实战项目

在Java企业级开发领域,Spring Boot作为构建现代应用的基石,通过自动配置和嵌入式服务器极大地提升了开发效率。其核心原理在于约定优于配置,结合Spring MVC处理Web请求,能够快速搭建RESTful API。这一技术组合的价值在于为开发者提供了一套标准化的、可扩展的解决方案模板,尤其适用于需要处理复杂业务逻辑和数据关联的管理系统。在实际应用场景中,诸如会员管理、课程预约、多角色权限控制等业务,正是检验这套技术栈的典型场景。本文以健身房管理系统为例,深入拆解其核心架构设计,特别是如何运用Spr

weixin_30323631的博客 341

Java深入解析篇十九之函数式编程详解

函数式编程(FP)是一种以函数为核心构建程序的范式,强调: 1.2 Java的函数式支持 Java 8 并非纯函数式语言,而是在面向对象基础上引入函数式特性: 1.3 纯函数与副作用 2. Lambda表达式语法与原理 2.1 基本语法 2.2 变量捕获与闭包 2.3 编译原理:invokedynamic Lambda 不是编译为匿名内部类,而是通过 指令 + 在运行时生成: 2.4 this指向 3. 函数式接口体系 3.1 @FunctionalInterface 注解 3.2 核心

萧瑟余晖的博客 300
上一篇: 本地缓存高性能之王Caffeine
下一篇: Mybatis检测mysql表是否存在
默 唁
博客等级 码龄7年 77粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值