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

Ruoyi多主键表的增删改查

   Ruoyi框架默认是基于id进行数据库表删除和修改,实际场景中更多采用多key联合主键,这时需要对自动生成的模块进行细微调整,具体步骤如下。

1、mysql数据库表定义

CREATE TABLE `device_realtime` (`workshopCode` varchar(50) DEFAULT NULL COMMENT '车间编码',`deviceCode` varchar(50) NOT NULL COMMENT '设备编码',`tagCode` varchar(50) NOT NULL COMMENT '点位编码',`tagName` varchar(50) DEFAULT NULL COMMENT '点位名称',`tagValue` varchar(50) NOT NULL COMMENT '点位值',`updateTime` datetime NOT NULL COMMENT '更新时间',PRIMARY KEY (`deviceCode`,`tagCode`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

表有两个主键:`deviceCode`和`tagCode`

2、Ruoyi-Admin之html文件修改

        $(function() {var options = {url: prefix + "/list",createUrl: prefix + "/add",updateUrl: prefix + "/edit/{id}",removeUrl: prefix + "/remove/{id}",exportUrl: prefix + "/export",modalName: "实时数据查询",columns: [{checkbox: true},{field: 'workshopCode',title: '车间编码'},{field: 'deviceCode',title: '设备编码'},{field: 'tagCode',title: '点位编码'},{field: 'tagName',title: '点位名称'},{field: 'tagValue',title: '点位值'},{field: 'updateTime',title: '更新时间'},{title: '操作',align: 'center',formatter: function(value, row, index) {var param = row.deviceCode+"&tagCode="+row.tagCode;var actions = [];actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + param + '\')"><i class="fa fa-edit"></i>编辑</a> ');actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + param + '\')"><i class="fa fa-remove"></i>删除</a>');return actions.join('');}}]};$.table.init(options);});

主要修改是操作部分,增加了param对参数进行拼接。

3、Ruoyi-Admin之Controller模块修改

/*** 修改实时数据查询*/@RequiresPermissions("system:realtime:edit")@GetMapping("/edit/{deviceCode}&tagCode={tagCode}")public String edit(@PathVariable("deviceCode") String deviceCode, @PathVariable("tagCode") String tagCode, ModelMap mmap){DeviceRealtime dr = new DeviceRealtime();dr.setDeviceCode(deviceCode);dr.setTagCode(tagCode);DeviceRealtime deviceRealtime = deviceRealtimeService.selectDeviceRealtimeByDeviceCode(dr);mmap.put("deviceRealtime", deviceRealtime);return prefix + "/edit";}/*** 删除实时数据查询*/@RequiresPermissions("system:realtime:remove")@Log(title = "实时数据查询", businessType = BusinessType.DELETE)@PostMapping( "/remove/{deviceCode}&tagCode={tagCode}")@ResponseBodypublic AjaxResult remove(@PathVariable("deviceCode") String deviceCode, @PathVariable("tagCode") String tagCode){DeviceRealtime deviceRealtime = new DeviceRealtime();deviceRealtime.setDeviceCode(deviceCode);deviceRealtime.setTagCode(tagCode);return toAjax(deviceRealtimeService.deleteDeviceRealtimeByDeviceCode(deviceRealtime));}

      主要修改编辑和删除模块,PostMapping和函数参数部分需要一致,并于html中一致,用两个主键锁定唯一记录。查询和新增记录使用参数是对象,不需要特别处理。

     如果涉及更多参数,也可以考虑直接将传入参数改为DeviceRealtime 对象。

4、ruoyi-system模块修改

4.1 服务接口IDeviceRealtimeService.java

  /*** 修改实时数据查询* * @param deviceRealtime 实时数据查询* @return 结果*/public int updateDeviceRealtime(DeviceRealtime deviceRealtime);/*** 删除实时数据查询信息* * @param deviceRealtime 实时数据查询* @return 结果*/public int deleteDeviceRealtimeByDeviceCode(DeviceRealtime deviceRealtime);

4.2服务实现DeviceRealtimeServiceImpl.java

    /*** 修改实时数据查询* * @param deviceRealtime 实时数据查询* @return 结果*/@Overridepublic int updateDeviceRealtime(DeviceRealtime deviceRealtime){deviceRealtime.setUpdateTime(DateUtils.getNowDate());return deviceRealtimeMapper.updateDeviceRealtime(deviceRealtime);}/*** 删除实时数据查询信息* * @param deviceRealtime 实时数据查询* @return 结果*/@Overridepublic int deleteDeviceRealtimeByDeviceCode(DeviceRealtime deviceRealtime){return deviceRealtimeMapper.deleteDeviceRealtimeByDeviceCode(deviceRealtime);}

4.3 Mapper文件DeviceRealtimeMapper.java修改

   /*** 修改实时数据查询* * @param deviceRealtime 实时数据查询* @return 结果*/public int updateDeviceRealtime(DeviceRealtime deviceRealtime);/*** 删除实时数据查询* * @param deviceCode 实时数据查询主键* @return 结果*/public int deleteDeviceRealtimeByDeviceCode(DeviceRealtime deviceRealtime);

4.4 xml文件DeviceRealtimeMapper.xml修改

<update id="updateDeviceRealtime" parameterType="DeviceRealtime">update edge.device_realtime<trim prefix="SET" suffixOverrides=","><if test="workshopCode != null">workshopCode = #{workshopCode},</if><if test="tagCode != null">tagCode = #{tagCode},</if><if test="tagName != null">tagName = #{tagName},</if><if test="tagValue != null and tagValue != ''">tagValue = #{tagValue},</if><if test="updateTime != null">updateTime = #{updateTime},</if></trim>where deviceCode = #{deviceCode} and tagCode = #{tagCode}</update><delete id="deleteDeviceRealtimeByDeviceCode" parameterType="DeviceRealtime">delete from edge.device_realtime where deviceCode = #{deviceCode} and tagCode = #{tagCode}</delete>

相关文章:

  • 【美团技术团队】从实际案例聊聊Java应用的GC优化
  • 解决 Git 访问 GitHub 时的 SSL 错误
  • [测试_10] Selenium IDE | cssSelector | XPath | 操作测试
  • 如何利用Elastic Stack(ELK)进行安全日志分析
  • c++ openssl 使用 DES(数据加密标准)进行加密和解密的基本操作
  • 互联网大厂Java面试:从Spring Cloud到Kafka的技术考察
  • 云计算 Linux Rocky day05【rpm、yum、history、date、du、zip、ln】
  • Vite模块联邦(vite-plugin-federation)实现去中心化微前端后台管理系统架构
  • kafka入门学习
  • day34- 系统编程之 网络编程(TCP)
  • Redis大量key集中过期怎么办
  • 深度学习张量
  • uniapp+vue3实现CK通信协议(基于jjc-tcpTools)
  • React hook之userReducer
  • NoSQL之Redis配置与优化
  • Java高级 | 【实验五】Spring boot+mybatis操作数据库
  • 游戏设计模式 - 子类沙箱
  • 微服务架构下的服务注册与发现:Eureka 深度解析
  • day20 leetcode-hot100-38(二叉树3)
  • 基于大数据爬虫+智能AI的网络小说数据可视化系统设计与实现
  • pc端网站建设/免费做网站怎么做网站链接
  • 长沙网站平台建设公司/搜索引擎优化搜索优化
  • b2b2c商城开发/百度视频seo
  • 学做包子馒头的网站/聊城seo优化
  • 知识付费网站搭建教程/广告联盟下载app
  • 专业定制网站建设代理/深圳十大教育培训机构排名