Mybatis分页查询,同时返回total
在垃圾项目中一般都是使用mybatis plus自动返回Page,但是涉及到多表联合或者等等情况最终还是要使用mybatis进行手写sql查询,所以有此文章以便后续使用查询.
首先mysql需要支持多条查询语句,在mysql配置url后加上:
&allowMultiQueries=true&useAffectedRows=true
Mapper查询数据的返回值用Object接收
List<Object> getWarningDataFromPage(@Nullable @Param("userId") Long userId,@Nullable @Param("orderNum") String orderNum,@Nullable @Param("deviceId") String deviceId,@Param("pageSize") long pageSize,@Param("pageNo") long pageNo);
mapper xml语句
<!--需查询数据map-->
<resultMap id="BaseResultMap" type="com.jingli.modules.sys.warning.domain.Warning"><id property="id" column="id" jdbcType="INTEGER"/><result property="warningId" column="warning_id" jdbcType="VARCHAR"/><result property="warningType" column="warning_type" jdbcType="INTEGER"/><result property="warningDesc" column="warning_desc" jdbcType="VARCHAR"/><result property="warningContent" column="warning_content" jdbcType="VARCHAR"/><result property="warningTime" column="warning_time" jdbcType="TIMESTAMP"/><result property="operatorId" column="operator_id" jdbcType="INTEGER"/><result property="deviceId" column="device_id" jdbcType="VARCHAR"/><result property="port" column="port" jdbcType="VARCHAR"/><result property="orderNumber" column="order_number" jdbcType="VARCHAR"/><result property="status" column="status" jdbcType="INTEGER"/><result property="remark" column="remark" jdbcType="VARCHAR"/></resultMap><!--total数据--><resultMap type="java.lang.Integer" id="count"><result column="total"/></resultMap><!--进行多次查询获取到对应数据-->
<select id="getWarningDataFromPage" resultMap="BaseResultMap,count">SELECT SQL_CALC_FOUND_ROWScw.id, cw.warning_id, cw.warning_type, cw.warning_desc, cw.warning_content, cw.warning_time, cw.operator_id,cw.device_id, cw.port, cw.order_number, cw.status, cw.remarkFROM`c_warning` AS `cw`LEFT JOIN `c_charging_pile` AS `ccp` ON cw.device_id = ccp.IDWHERE 1 = 1<if test="null != userId">AND ccp.userId = #{userId}</if><if test="null != orderNum and orderNum !=''">AND cw.order_number = #{orderNum}</if><if test="null != deviceId and deviceId !=''">AND cw.device_id = #{deviceId}</if>limit #{pageNo},#{pageSize};###用于获取totalSELECT FOUND_ROWS() as total;</select>
从List<Object>中取出数据:
@Overridepublic Page<Warning> getWarningPage(@Nullable Long userId, @Nonnull Long pageSize, @Nonnull Long pageNo, @Nullable String deviceId, @Nullable String orderNum) {Long selectNum = (pageNo - 1) * pageSize;List<Object> dtoData = warningMapper.getWarningDataFromPage(userId, orderNum, deviceId, pageSize, selectNum);List<Warning> warningList = (List<Warning>) dtoData.get(0);Integer total =((List<Integer>) dtoData.get(1)).get(0);Page<Warning> warningPage = new Page<>(pageNo, pageSize);warningPage.setRecords(warningList);warningPage.setTotal(total);warningPage.setSearchCount(true);warningPage.setCurrent(pageNo);warningPage.setSize(pageSize);return warningPage;}
至此可实现mybatis plus的Page查询,mysql中执行查询total并不会再次查询,而是获取到对应的分页查询到数据的结果.
相关文章:
Mybatis分页查询,同时返回total
在垃圾项目中一般都是使用mybatis plus自动返回Page,但是涉及到多表联合或者等等情况最终还是要使用mybatis进行手写sql查询,所以有此文章以便后续使用查询. 首先mysql需要支持多条查询语句,在mysql配置url后加上: &allowMultiQueriestrue&useAffectedRowstrue Mapper…...
JDK17新增语法特征
1、引言 Spring Boot 3.0 开始不再支持 JDK 8,转而支持 JDK 17。 这篇博客我会列举较常用的新语法特性。 2、新增语法特征 2.1 yield关键字 从Java13开始引⼊yield关键字,yield关键字应用于switch语句中,我们可以使用yield来简化代码。 正常的…...
2748. 美丽下标对的数目(Rust暴力枚举)
题目 给你一个下标从 0 开始的整数数组 nums 。如果下标对 i、j 满足 0 ≤ i < j < nums.length ,如果 nums[i] 的 第一个数字 和 nums[j] 的 最后一个数字 互质 ,则认为 nums[i] 和 nums[j] 是一组 美丽下标对 。 返回 nums 中 美丽下标对 的总…...
Vue中双向数据绑定是如何实现的
在 Vue.js 中,双向数据绑定(也称为响应式系统)是通过其内部实现的一个系统来实现的,该系统可以追踪数据的变化,并在数据变化时自动更新 DOM。Vue 使用了一种称为“观察者-订阅者”的模式来实现这一点。 以下是 Vue 双…...
桌面云和云桌面的区别联系
桌面云和云桌面是两个相关但不完全相同的概念。桌面云是一种基于云计算技术的解决方案,将用户的桌面环境(包括操作系统、应用程序和数据)移至云端进行管理和交付,而云桌面是在服务器上虚拟化的桌面环境,用户通过网络连…...
ECMAScript6介绍及环境搭建
这实际上说明,对象的解构赋值是下面形式的简写。 let { foo: foo, bar: bar } { foo: ‘aaa’, bar: ‘bbb’ }; 也就是说,对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。真正被赋值的是后者,而…...
什么是Azure OpenAI?
Azure OpenAI 是微软与 OpenAI 合作推出的人工智能服务,旨在通过 Azure 云平台提供 OpenAI 的先进模型和技术。这个服务允许开发者和企业使用 OpenAI 的强大语言模型(如 GPT-3、Codex 和 DALL-E 等)来创建智能应用和解决方案。以下是一些主要…...
一个易于使用、与Android系统良好整合的多合一游戏模拟器
大家好,今天给大家分享的是一个易于使用、与Android系统良好整合的多合一游戏模拟器 Lemuroid。 Lemuroid 是一个专为Android平台设计的开源游戏模拟器项目,它基于强大的Libretro框架,旨在提供广泛的兼容性和卓越的用户体验。 项目介绍 Lem…...
java spring注解的使用
Java Spring框架中的注解用于简化代码的编写和配置工作。它们提供了一种简洁、强大和灵活的方式来定义和配置Spring应用程序。 下面是一些常用的Java Spring注解的使用示例: Component: 标记一个类为Spring容器管理的Bean,可用于任何类。 Component p…...
什么是数据同步?数据同步时发生中断怎么办?
数据同步是将数据从一个系统或平台复制到另一个系统或平台的过程。在现代信息化时代,数据同步变得越来越重要,因为组织需要在不同的系统之间共享数据,并确保数据的准确性和一致性。本文将介绍什么是数据同步以及数据同步中常出现的问题&#…...
HarmonyOS Next开发学习手册——ExtensionAbility
概述 EmbeddedUIExtensionAbility 是EMBEDDED_UI类型的ExtensionAbility组件,提供了跨进程界面嵌入的能力。 EmbeddedUIExtensionAbility需要和 EmbeddedComponent 一起配合使用,开发者可以在UIAbility的页面中通过EmbeddedComponent嵌入本应用的Embed…...
如何开发企业微信SCRM
企业微信SCRM(Social Customer Relationship Management)是一种用于管理和优化企业与客户关系的工具,它整合了社交媒体和CRM系统,帮助企业更有效地跟进销售线索、提供客户服务和进行市场营销。以下是开发企业微信SCRM的一些关键步…...
Java中的标准注解与数据校验:深入解析与实例
目录 Java中的标准注解与数据校验:深入解析与实例1. 基础校验注解NonNullNotBlankSize 2. 数值校验注解Min & MaxPositive & Negative 3. 枚举与模式匹配自定义注解示例(概念性展示) 4. 自定义校验逻辑结论 Java中的标准注解与数据校…...
模型泛化性测试
文章目录 准备工作场景描述训练数据集获取与训练 测试结论测试方案外机进行平移外机进行旋转外机即平移又旋转该螺纹孔位置 准备工作 场景描述 场景搭建如下如所示: 在该场景中,将机器人安置在桌子左上角处(以面对显示器的视野)…...
智能推荐系统:技术解析与实践指南
智能推荐系统:技术解析与实践指南 背景与挖掘目标 在互联网信息爆炸的今天,用户在海量内容中筛选感兴趣的信息变得日益困难。因此,搜索引擎结合推荐系统的模式应运而生。本章节将深入探讨推荐系统,其核心目标如下: …...
盛元广通数字孪生智能集控实验室管理系统
盛元广通数字孪生智能集控实验室管理系统可广泛应用于各类实验室场景,包括科研实验室、教学实验室、工业实验室等。通过实时监测、预测性维护、故障诊断与优化等功能,该系统能够提高实验室的运行效率、安全性和可靠性,降低运维成本。设计直观…...
Spring Boot 优雅进行数据脱敏
文详细解析在Spring Boot应用中优雅地脱敏敏感信息,如手机号、邮箱、身份证等,使用的是Jackson库中的JsonSerializer。 1. 创建自定义脱敏序列化器 首先,创建一个继承自JsonSerializer<String>的序列化器。以MobileSerializer为例&am…...
Vue3 条件语句
Vue3 条件语句 在Vue.js 3.x版本中,条件语句是一种常用的功能,用于根据特定条件渲染不同的DOM元素。Vue提供了几种方式来实现条件渲染,包括v-if、v-else-if、v-else以及v-show。本文将详细介绍这些条件语句的用法,并通过示例来展…...
小白想要快速学好office办公软件,主要学习以下几个方面?
Office办公软件培训通常包括以下几个核心内容: 1.**Word文档处理**:学习如何创建、编辑、格式化文本,插入图片、表格和图表,调整页面布局和样式,以及进行文档打印和共享。 2.**Excel电子表格**:掌握如…...
【Linux文件系统】被打开的文件与文件系统的文件之间的关联刨析总结
操作系统管理物理内存以及与外设磁盘硬件进行数据的交换 操作系统如何管理物理内存呢? 其实操作系统内核先对内存先描述再组织的!操作系统管理内存的基本单位是4KB,操作系统会为每一个4KB大小的物理内存块创建一个描述该4KB内存块的struct pa…...
【AI】JSON 格式:执行式AI数据交互核心语法
JSON 格式:执行式AI数据交互核心语法📝 本章学习目标:本章是入门认知部分,帮助零基础读者建立对AI Agent的初步认知。通过本章学习,你将全面掌握"JSON 格式:执行式AI数据交互核心语法"这一核心主…...
AMD GPU大模型部署与优化指南:基于ollama-for-amd的本地AI解决方案
AMD GPU大模型部署与优化指南:基于ollama-for-amd的本地AI解决方案 【免费下载链接】ollama-for-amd Get up and running with Llama 3, Mistral, Gemma, and other large language models.by adding more amd gpu support. 项目地址: https://gitcode.com/gh_mir…...
5步掌握Loop:让Mac窗口管理效率提升10倍的免费开源方案
5步掌握Loop:让Mac窗口管理效率提升10倍的免费开源方案 【免费下载链接】Loop MacOS窗口管理 项目地址: https://gitcode.com/GitHub_Trending/lo/Loop 在数字工作环境中,窗口管理已成为影响效率的隐形瓶颈。Mac用户每天平均需要执行200次窗口操作…...
从 0 手写一个巡检调度系统(五):接入大模型实现巡检问题解读与修复建议
摘要:在既有「架构巡检 → 问题落库」链路中,第一次引入大模型能力:对单条 issue 做「解读 修复建议」,要求输出可解析的结构化 JSON 并落库可追溯。本文记录选型、配置、HTTP 客户端、Prompt 约束与踩坑,便于同类业务…...
# 智能合约安全实战:重入攻击原理与防御机制详解(Solidity + Foundry)在以太坊生态中,**智能合约的安全性
智能合约安全实战:重入攻击原理与防御机制详解(Solidity Foundry) 在以太坊生态中,智能合约的安全性直接决定项目的生命线。近年来频繁爆发的漏洞事件表明,即使是看似简单的逻辑也可能埋藏致命隐患。其中,…...
深入解析:set_clock_groups中-physically_exclusive与-asynchronous的约束协同与必要性
1. 从Spyglass报错看时钟约束的必要性 最近在跑Spyglass做SDC检查时,遇到了一个让我困惑的报错:"当两个时钟设置成物理互斥或逻辑互斥时,需要另外加上这两个时钟是异步设置的约束"。这让我很纳闷,明明已经设置了物理互…...
OpenClaw夜间任务优化:Qwen3-32B+RTX4090D镜像低负载模式配置
OpenClaw夜间任务优化:Qwen3-32BRTX4090D镜像低负载模式配置 1. 问题背景与优化动机 去年12月,我开始用OpenClawQwen3-32B模型搭建个人自动化工作流。最初配置的定时备份任务每晚11点准时运行,但很快发现两个问题: 电费异常&am…...
终极指南:如何在Windows上实现完美的三指拖拽体验
终极指南:如何在Windows上实现完美的三指拖拽体验 【免费下载链接】ThreeFingersDragOnWindows Enables macOS-style three-finger dragging functionality on Windows Precision touchpads. 项目地址: https://gitcode.com/gh_mirrors/th/ThreeFingersDragOnWind…...
拯救你的RStudio Server:除了点‘Terminate R’,你还可以试试这几招(附原理)
拯救你的RStudio Server:除了点‘Terminate R’,你还可以试试这几招(附原理) 当你盯着RStudio Server界面上那个转个不停的加载图标,看着"R is taking longer to start than usual"的提示,内心可…...
Matlab APP Designer避坑指南:字符进度条不更新的解决方案
Matlab APP Designer避坑指南:字符进度条不更新的解决方案 在Matlab APP Designer开发过程中,进度条是用户交互体验的重要组成部分。许多开发者都遇到过这样的困扰:精心设计的字符进度条在运行时却"卡住"不动,直到整个计…...
