MybatisPlus多表联查-分页关联查询+根据id获取多表联查后的单行数据

分页关联查询

需求分析

两张表w以及d,需要w的一些字段以及d的一些字段在前端显示
此时就需要用到关联查询,查询到的数据放入视图类,显示在前端

项目结构

在这里插入图片描述

视图类

package com.wedu.modules.tain.entity.vo;import lombok.Data;import java.util.Date;@Data
public class WarnVo {//传输给前端展示//idprivate Long id;//车间private String workshops;//设备编号private String deviceNumber;//设备名称private String deviceName;//设备型号private String deviceModel;//维保到期时间private Date tainEndTime;//预警时间private Date warnTime;//状态(是否生成预警信息 是否被保养)private int status;
}

定义关联查询分页方法

首先在mapper接口中再定义分页的关联查询方法,复用分页类page,querywrapper组装where条件

@Mapper
public interface TainWarnMapper extends BaseMapper<TainWarn> {IPage<WarnVo> selectWarnPage(IPage<WarnVo> page, @Param(Constants.WRAPPER) QueryWrapper<WarnVo> wrapper);
}

在对应xml内创建对应的关联查询

  • TainWarnMapper.xml
<select id="selectWarnPage" resultType="com.wedu.modules.tain.entity.vo.WarnVo">select w.id,d.workshops,d.device_number,d.device_name,d.device_model,w.warn_time,w.tain_end_time,d.statusfrom tain_warn w left join device don d.id=w.device_id${ew.customSqlSegment}</select>

${ew.customSqlSegment}是MyBatis Plus提供的动态SQL语句拼接功能。
在使用MyBatis Plus进行数据库操作时,可以通过Wrapper对象来构建查询条件。Wrapper对象可以通过链式调用的方式动态添加查询条件,包括等于、大于、小于等各种条件。而${ew.customSqlSegment}就是Wrapper对象中自定义的SQL片段,可以灵活地根据业务需求进行动态拼接。

service层

在service内写一个接口方法在impl内实现,先新建一个查询每页显示10条,再手动关闭sql优化避免查询总数的时候只查询主表,再创建querywrapper对象写查询条件,最后调用mapper接口的分页关联查询方法,传入分页的查询和查询条件,最后返回对象

  • ITainWarnService
public interface ITainWarnService extends IService<TainWarn> {PageUtils queryWarnPage(Map<String, Object> params);
}
  • TainWarnServiceImpl
    @Autowiredprivate TainWarnMapper tainWarnMapper;@Overridepublic PageUtils queryWarnPage(Map<String, Object> params) {// 从参数中获取当前页码和每页大小//.toString() 从 params 集合中检索到的值转换为字符串格式//Integer.parseInt()将字符串解析为整数int current = Integer.parseInt(params.get("page").toString());int pageSize = Integer.parseInt(params.get("limit").toString());// 设置分页参数Page<WarnVo> page = new Page<>(current,pageSize);//一定要手动关闭 SQL 优化,不然查询总数的时候只会查询主表page.setOptimizeCountSql(false);QueryWrapper<WarnVo> qw = new QueryWrapper<>();//组装查询条件 where status = 1qw.eq("status","1");IPage<WarnVo> wp = tainWarnMapper.selectWarnPage(page,qw);return new PageUtils(wp);}

TainWarnController实现分页查询

和之前写的分页查询一模一样,查询过程变了,但最后和前端的交互是一样的

    @Autowiredprivate ITainWarnService iTainWarnService;@GetMapping("/queryWarnMessage")public R queryWarnMessage(@RequestParam Map<String,Object> params){PageUtils page = iTainWarnService.queryWarnPage(params);return R.ok().put("page",page);}

前端显示如图,分页关联查询成功
在这里插入图片描述

根据id获取当前一行数据

在前端点击添加保养记录的时候获取这条数据的id,根据当前点击数据的id查询warnVo实体类找到该条数据,warnVo是w和d两张表关联查询的结果

TainWarnMapper

首先写一个接口,传入id获取单行数据的实体类,@Param("id")写别名

@Mapper
public interface TainWarnMapper extends BaseMapper<TainWarn> {WarnVo selectById(@Param("id") Long id);
}

在xml内写查询语句,这里明确根据id查找可以直接写where,不用高级查询querywrapper再拼接

<select id="selectById" resultType="com.wedu.modules.tain.entity.vo.WarnVo" parameterType="java.lang.Long">select w.id,d.workshops,d.device_number,d.device_name,d.device_model,w.warn_time,w.tain_end_time,d.statusfrom tain_warn w left join device don d.id=w.device_idwhere w.id = #{id}</select>

ITainWarnService

public interface ITainWarnService extends IService<TainWarn> {WarnVo selectById(Long id);
}

TainWarnServiceImpl

    @Overridepublic WarnVo selectById(Long id) {return tainWarnMapper.selectById(id);}

TainWarnController

    //根据id拿出用户信息@GetMapping("/info/{id}")public R info(@PathVariable("id") Long id){WarnVo warnVo = iTainWarnService.selectById(id);return R.ok().put("warnVo",warnVo);}

根据id查询结果可在network的response内看到
在这里插入图片描述
在这里插入图片描述

部分前端代码

<script>
export default {data() {return {dataForm: {id: 0,workshops: "",deviceNumber: "",deviceName: "",deviceModel: "",tainEndTime: "",warnTime: "",status: "",},dialogVisible: false,};},methods: {init(id) {this.dataForm.id=id;this.dialogVisible = true;this.$nextTick(() => {this.$refs["dataForm"].resetFields();});if (this.dataForm.id) {this.$http({url: this.$http.adornUrl(`/tain/warn/info/${this.dataForm.id}`),method: "get",}).then(({ data }) => {if (data && data.code === 0) {(this.dataForm.workshops = data.warnVo.workshops),(this.dataForm.deviceNumber = data.warnVo.deviceNumber),(this.dataForm.deviceName = data.warnVo.deviceName),(this.dataForm.deviceModel = data.warnVo.deviceModel),(this.dataForm.tainEndTime = data.warnVo.tainEndTime),(this.dataForm.warnTime = data.warnVo.warnTime),(this.dataForm.status = data.warnVo.status);}});}},handleClose(done) {this.$confirm("确认关闭?").then((_) => {done();}).catch((_) => {});},},
};
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/691952.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法】约瑟夫环问题解析与实现

一、导言 约瑟夫环&#xff08;Josephus Problem&#xff09;是一个经典的数学问题&#xff0c;涉及一个编号为 1 到 n 的人围成一圈&#xff0c;从第一个人开始报数&#xff0c;报到某个数字 m 的人出列&#xff0c;然后再从下一个人开始报数&#xff0c;如此循环&#xff0c…

挑战杯 基于RSSI的室内wifi定位系统

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; wifi室内定位系统 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;…

仿照elementUI写个步骤条

效果图如下&#xff1a; 直接上代码&#xff1a; <template><div class""><div class"steps"><div class"step" v-for"(step, index) in steps" :key"index"><divclass"icon"click&…

深度学习发展的艺术

将人类直觉和相关数学见解结合后&#xff0c;经过大量研究试错后的结晶&#xff0c;产生了一些成功的深度学习模型。 深度学习模型的进展是理论研究与实践经验相结合的产物。科学家和工程师们借鉴了人类大脑神经元工作原理的基本直觉&#xff0c;并将这种生物学灵感转化为数学模…

公司有多个域名,是不是每个域名都安装一个SSL证书?

公司有多个域名&#xff0c;是不是每个域名都安装一个SSL证书&#xff1f; 拥有多个域名可能意味着会增加管理的复杂性和维护成本。如果您的公司有很多个域名&#xff0c;并不是每个域名都要逐个安装SSL证书。可以考虑购买多域名SSL证书或通配符SSL证书&#xff0c;而不是为每…

【Java】上传图片至阿里云oss服务器,文件上传以及图片base64上传

目录 引入maven依赖编写ossUtil编写Controller使用接口工具进行测试测试表单文件上传测试base64文件上传 首先需要在阿里云上开通oss服务&#xff0c;并获取到以下四个信息 endpoint: 购买的服务器节点地址accessKeyId: 接入的keyIdaccessKeySecret: 接入的key秘钥bucketName&…

[计算机网络]---UDP协议

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、端口号…

MyBatis数据库查询

文章目录 什么是MyBatisMyBatis程序的创建MyBatis实现数据库查询传参查询插入实现添加操作获取自增ID删除实现修改实现#{}和${}SQL注入 like查询 resultMap和resultType多表查询 对于普遍的后端开发而言&#xff0c;其程序主要包含了后端主程序和数据库两个部分&#xff0c;用户…

C/C++ BM11 链表相加(二)

文章目录 前言题目解决方案一1.1 思路阐述1.2 源码 总结 前言 这道题使用链表来实现加法运算&#xff0c;主要是涉及到数据对位以及加法进位的处理。 题目 假设链表中每一个节点的值都在 0 - 9 之间&#xff0c;那么链表整体就可以代表一个整数。 给定两个这种链表&#xff0…

使用C# Net6连接国产达梦数据库记录

达梦官网&#xff1a;http://www.dameng.com/ 1 下载达梦并进行安装 下载地址&#xff1a;官网首页——服务与合作——下载中心&#xff08;https://www.dameng.com/list_103.html&#xff09; 根据需要自行下载需要的版本&#xff0c;测试版本为&#xff1a;x86 win64 DM8版…

微信商户平台:如何查看超级管理员

如果有普通员工身份&#xff0c;可以登录 https://pay.weixin.qq.com/index.php/core/account/info 扫码进入后&#xff0c;进入菜单&#xff1a;账户中心》商户信息&#xff0c; 即可看到超级管理员的信息。

Windows 重启 explorer 的正确做法

目录 一、关于 Restart Manager 二、重启管理器实例 三、完整实现代码和测试 本文属于原创文章&#xff0c;转载请注明出处&#xff1a; https://blog.csdn.net/qq_59075481/article/details/136179191。 我们往往使用 TerminateProcess 并传入 PID 和特殊结束代码 1 或者…

VsCode指定插件安装目录

VsCode指定插件安装目录 VsCode安装的默认目录是在用户目录(%HomePath%)下的.vscode文件夹下的extensions目录下&#xff0c;随着安装插件越来越多会占用大量C盘空间。 指定VsCode的插件目录 Vscode安装目录&#xff1a; D:\Microsoft VS Code\Code.exeVscode插件安装目录&a…

算法沉淀——递归(leetcode真题剖析)

算法沉淀——递归 01.汉诺塔问题02.合并两个有序链表03.反转链表04.两两交换链表中的节点05.Pow(x, n) 递归是一种通过调用自身的方式来解决问题的算法。在递归算法中&#xff0c;问题被分解为更小的相似子问题&#xff0c;然后通过对这些子问题的解进行组合来解决原始问题。递…

实现VLAN间通信以太网链路聚合与交换机堆叠、集群华为ICT网络赛道

10.实现VLAN间通信 10.1.使用路由器实现VLAN间通信 使用路由器物理接口 路由器三层接口作为网关&#xff0c;转发本网段前往其它网段的流量。 路由器三层接口无法处理携带VLAN Tag的数据帧&#xff0c;因此交换机上联路由器的接口需配置为Access. 路由器的一个物理接口作为一…

跨境电商无货源如何实现自动化对接1688货源商品上架?1688商品采集API来帮你

阿里巴巴集团旗下的B2B电子商务网站&#xff0c;提供海量优质商品&#xff0c;为采购商和供应商提供交流、合作、采购等服务&#xff0c;是很多没有货源优势的电商卖家首选的货源途径&#xff0c;也是国内最大、货源种类最齐全的货源网站。 不少做跨境电商无货源的朋友都想要直…

优思学院|精益思想如何识别价值流?【案例分析】

精益思想是一种为了提高效率、减少浪费的管理哲学&#xff0c;精益思想强调在整个生产过程中识别并消除一切不创造价值的步骤。 价值流分析是精益思想中的一个核心概念&#xff0c;通过深入分析特定产品从原材料到最终交付给顾客的全过程&#xff0c;来识别并削减浪费&#xf…

Win11专业版安装集成了谷歌框架的安卓子系统,包含谷歌商店

1.摘要 上一篇博客讲述了使用微软商店安装安卓子系统的教程 https://blog.csdn.net/RudeTomatoes/article/details/135958882 上述方法的优点是安装过程简单&#xff0c;但是&#xff0c;由于Windows安卓子系统是微软与亚马逊联合开发&#xff0c;默认没有安装谷歌框架。我尝试…

Pytorch框架-----torch.tensor(创建张量)

文章目录 前言一、torch.Tensor二、构建tensor1.从Python的list或序列构建2.空张量3.索引和切片来获取和修改一个张量tensor中的内容 前言 torch.Tensor 是包的核心类。如果将其属性 .requires_grad 设置为 True&#xff0c;则会开始跟踪针对 tensor的所有操作。完成计算后&am…

学习总结19

# 奶牛的耳语 ## 题目描述 在你的养牛场&#xff0c;所有的奶牛都养在一排呈直线的牛栏中。一共有 n 头奶牛&#xff0c;其中第 i 头牛在直线上所处的位置可以用一个整数坐标 pi(0< pi < 10^8) 来表示。在无聊的日子里&#xff0c;奶牛们常常在自己的牛栏里与其它奶牛交…