当前位置: 首页 > news >正文

【解决】Springboot+Mybatis数据分表后前端如何根据条件映射到对应子表中查询数据?!

一、问题提出

对于大量数据的存储,使用分库分表方案是解决查询效率问题的关键。实际应用中,前端如何根据条件映射到指定子表进行数据查询呢?今天良哥手把手教你实现该方案。

二、解决方案

1)前端页面增加查询参数:tableName

      // 查询参数queryParams: {pageNum: 1,pageSize: 20,//当前查询的历史记录表名tableName: 'chemical_history_data',pid: null,pcode: null,pname: null,ord: null,measureValue: null,alarmStatus: null,alarmMsg: null,receiveTime: null,params: {sort: "receive_time desc, ord"}},

2)提交查询时根据当前条件指定数据所在的子表名称,并将表名更新到查询参数中:this.queryParams.tableName = ‘xxxx’

	/** 查询历史数据列表 */getList() {this.loading = true;this.queryParams.tableName = "chemical_history_data";this.queryParams.params.beginReceiveTime = this.queryParams.params.endRecordTime = null;if (null != this.daterangeReceiveTime && '' != this.daterangeReceiveTime) {// 封装查询开始时间和结束时间this.queryParams.params["beginReceiveTime"] = this.daterangeReceiveTime[0];this.queryParams.params["endReceiveTime"] = this.daterangeReceiveTime[1];// 根据开始时间生成要查询的历史数据表名let curDate = new Date();let queryDate = new Date(this.queryParams.params["beginReceiveTime"]);if (curDate.getDate() != queryDate.getDate()) {this.queryParams.tableName += "_" + queryDate.getFullYear()+ (queryDate.getMonth()<9?"0":"") + (queryDate.getMonth()+1)+ (queryDate.getDate()<10?"0":"") + (queryDate.getDate());if (!this.historyTableNames.includes(this.queryParams.tableName)) {this.$message.error("数据源不存在:" + this.queryParams.tableName);this.queryParams.tableName = "chemical_history_data";}}}listHistoryData(this.queryParams).then(response => {this.historyDataList = response.rows;this.total = response.total;this.loading = false;});},

3)后端实体增加查询参数:tableName

public class ChemicalHistoryData extends BaseEntity
{private static final long serialVersionUID = 1L;/** 表名 */private String tableName;/** 测点id */private Long pid;/** 测点编码 */@Excel(name = "测点编码")private String pcode;/** 测点名称 */@Excel(name = "测点名称")private String pname;………………………………………………………………………………
}

4)扩展mapper文件查询语句,添加数据表名接收参数&{tableName}

	<sql id="selectChemicalHistoryDataVo">select pid, ord, pname, pcode, measure_value, alarm_status, alarm_msg, receive_time from<if test="tableName == null or tableName == ''"> chemical_history_data </if><if test="tableName != null and tableName != ''"> ${tableName} </if></sql>

三、效果验证

在这里插入图片描述
完美实现!!!

http://www.dtcms.com/a/442329.html

相关文章:

  • 小迪自用web笔记53
  • 芜湖做网站哪个公司好网页设计基础的课程介绍
  • 网络营销郑州网站搭建方案开发 网站 团队
  • 做网站联系电话wordpress相册分类
  • win10/11 下载安装git教程 简单版
  • STM32 UART篇
  • 直播网站是怎么做的万网是做网站的吗
  • Python自动连接已保存WiFi
  • 数据结构二叉树
  • 我们做网站 出教材 办育心经做外贸必须建网站吗
  • GLUE任务
  • 【VS2022】LNK assimp64.lib找不到文件_openframework
  • 【架构艺术】构建变更风险防控能力市场的一些经验
  • 代做网站推广的公司wix做网站手机乱了
  • 操作系统应用开发(二十一)RustDesk 域名访问故障—东方仙盟筑基期
  • 做网站的都是直男癌吗创业做网站
  • JPA/Hibernate 批量插入实战:告别低效,实现真正的 MySQL 批量写入
  • 做企业网站需要准备什么材料口碑最好的旅游软件排名
  • 鸿蒙开发4--鸿蒙页面导航Router与参数传递详解
  • 容器生命周期与管理策略
  • 依托 Amazon Bedrock 生成式 AI 能力,结合 Slack 生态与亚马逊云科技服务构建企业级图像生成 App 的全流程解析
  • 设计师可以做兼职的网站国外优惠卷网站如何做
  • 小企业常用的进销存软件有哪些
  • Filebeat+Kafka+ELK 日志采集实战
  • 『C++成长记』一颗会搜索的二叉树
  • 【经验分享】JWE 详解:比 JWT 更安全的令牌技术
  • 【连载6】数据库未来发展趋势展望,附例子,避坑指南以及面试题
  • 【深度学习计算机视觉】09:语义分割和数据集——核心概念与关键技术解析
  • 直播网站建设重庆数据分析师35岁以后怎么办
  • 【Ray大模型分布式训练】