【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【08】【商品服务】Object划分_批量删除


持续学习&持续更新中…

守破离


【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【08】【商品服务】Object划分_批量删除

  • Object划分
  • 批量删除/添加
  • 参考

Object划分

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


  • 数据库中对于一张表的数据,由于拥有隐私字段、多余字段、字段过少等原因,不应该直接传递给客户端让客户端直接使用。
  • 并且要知道数据的传输是要经过网络通信的,考虑到数据大小对于用户流量、系统并发量/吞吐量等的影响,我们也不应该给客户传递冗余或者缺失的JSON数据。
  • 还有很多原因
    • 比如我们的一个业务所需要的信息有时候其实并不是仅由一张表就能覆盖的
    • 比如数据库中的字段信息其实并不适合展示给用户看,需要做处理
    • 前端发过来的数据,使用一个简单的数据库对象也并不一定能处理好
  • 综上,我们肯定要对从数据库中查询出来的表数据进行一些加工处理、业务逻辑处理之后再传递给上一层,直到客户端,而不是简单的一张表对应一个Model对象。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

批量删除/添加

一句一句删除的话,会发送很多个请求给MySQL服务器,会对MySQL造成较大的性能影响,也会占用资源和带宽,所以使用批量删除

    //TODO 写博客:批量删除@PostMapping("/attr/relation/delete")public R batchDeleteRelation(@RequestBody List<AttrAttrGroupRelationVo> relationVos) {relationService.batchDeleteRelation(relationVos);return R.ok();}
    @Transactional@Overridepublic void batchDeleteRelation(List<AttrAttrGroupRelationVo> relationVos) {this.baseMapper.batchDeleteRelation(relationVos);}
@Mapper
public interface AttrAttrgroupRelationDao extends BaseMapper<AttrAttrgroupRelationEntity> {/*一句一句删除的话,会发送很多个请求给MySQL服务器,会对MySQL造成较大的性能影响,也会占用资源和带宽,所以使用批量删除批量删除语句:DELETE FROM pms_attr_attrgroup_relationWHERE('attr_id' = 1 AND 'attr_group_id' = 1)OR('attr_id' = 3 AND 'attr_group_id' = 2)OR ...*/void batchDeleteRelation(@Param("relations") List<AttrAttrGroupRelationVo> relationVos);}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.atguigu.gulimall.product.dao.AttrAttrgroupRelationDao"><!-- 可根据自己的需求,是否要使用 --><resultMap type="com.atguigu.gulimall.product.entity.AttrAttrgroupRelationEntity" id="attrAttrgroupRelationMap"><result property="id" column="id"/><result property="attrId" column="attr_id"/><result property="attrGroupId" column="attr_group_id"/><result property="attrSort" column="attr_sort"/></resultMap><delete id="batchDeleteRelation">DELETE FROM `pms_attr_attrgroup_relation` WHERE<foreach collection="relations" item="item" separator=" OR ">(attr_id=#{item.attrId} AND attr_group_id=#{item.attrGroupId})</foreach></delete></mapper>

批量添加:

    <insert id="batchAddRelation">INSERT INTO  `pms_attr_attrgroup_relation`(attr_id, attr_group_id) VALUES<foreach collection="relations" item="item" separator=",">(#{item.attrId} , #{item.attrGroupId})</foreach></insert>

or

    @Transactional@Overridepublic void batchAddRelation(List<AttrAttrGroupRelationVo> relationVos) {
//        使用自己写的批量添加也可以
//        this.baseMapper.batchAddRelation(relationVos);List<AttrAttrgroupRelationEntity> collect = relationVos.stream().map(relation -> {AttrAttrgroupRelationEntity attrAttrgroupRelationEntity = new AttrAttrgroupRelationEntity();
//            attrAttrgroupRelationEntity.setAttrId(relation.getAttrId());
//            attrAttrgroupRelationEntity.setAttrGroupId(relation.getAttrGroupId());BeanUtils.copyProperties(relation, attrAttrgroupRelationEntity);return attrAttrgroupRelationEntity;}).collect(Collectors.toList());this.saveBatch(collect);}

参考

雷丰阳: Java项目《谷粒商城》Java架构师 | 微服务 | 大型电商项目.


本文完,感谢您的关注支持!


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

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

相关文章

浅谈二刷链表的感受以及引发的思考

1.总括 链表这个东西&#xff0c;就是一个非连续的物理结构&#xff0c;也属于这个线性表的一种&#xff0c;但是不像顺序表那样在这个物理结构上面是连续的&#xff0c;因此我们没有办法通过下标对于这个链表进行遍历&#xff0c;而是需要一个next指针进行这个指向的说明&…

中文技术文档的写作规范(搬运)

阮一峰老师的《中文技术文档的写作规范》搬运。 链接指路&#xff1a; https://github.com/ruanyf/document-style-guide/tree/master 内容&#xff1a;对中文技术文档从标题、文本、段落、数值、标点符号、文档体系、参考链接等七大方面进行了简明扼要的介绍。

网络安全练气篇——PHP编程语言基础

目录 PHP基础 一、PHP简介与环境搭建 什么是PHP&#xff1f; PHP环境安装 代码编辑选择 二、基本语法 PHP基本语法操作 PHP变量与输出 啥是常量? PHP注释 PHP单引号双引号声明 三、PHP表单 PHP表单 四、登录界面搭建与讲解 构建登陆页面 登陆页面端 服务器端…

汽车油耗NEDC与WLTP有什么区别?以及MATLAB/Simulink的汽车行驶工况仿真

最近的热点新闻非比亚迪的秦L莫属&#xff0c;其油耗达到2.9L/100km&#xff0c;但其标注为NEDC也引起了讨论&#xff0c; NEDC与WLTP的区别 NEDC的全称为“New European Driving Cycle”&#xff0c;即“新欧洲驾驶循环”。这种油耗测试标准起源于上世纪80年代&#xff0c;主…

计算机类期刊含金量横纵向对比(一)

本文期刊横纵向对比数据均来源于知网、知乎、谷歌学术、博客网、百度百科、发表者论坛所综合提取的数据对比。&#xff08;经验分享&#xff09; 期刊 难度比较 含金量 发表领域&#xff08;侧重点&#xff09; 审稿速度 收录情况 费用 计算机应用 对投稿者学历工作要求…

近期笔记总结

都是最近项目中会用到的一些小方法 写个笔记整理一下 方便之后忘了找不到 1、相同字段的对象 直接赋值 主要是用到编辑的功能里面 拿到的查询字段和需要赋值的字段一模一样时 不用一个一个的去写等于了 assingTab(arrA,arrB){Object.keys(arrA).forEach(key > {arrA[key] a…

液晶拼接屏企业应该采取哪些措施来提升整体竞争力和市场地位呢?

步入智能科技时代以来&#xff0c;商显行业面对着各式各样的挑战&#xff0c;人工智能、AI大模型等整合中&#xff0c;液晶拼接屏企业应该采取哪些措施以提升整体竞争力和市场地位。下面小编个人观点简单说一下&#xff1b;下是一些关键的措施&#xff1a; 首先&#xff0c;加…

Java文件复制方法详解:原理、使用场景、优缺点及代码示例

1. 基本文件流 (FileInputStream 和 FileOutputStream) 原理 基本文件流通过逐字节读取和写入文件来实现文件复制。这种方法简单直接&#xff0c;但效率较低。 使用场景 适用于小文件或对性能要求不高的场景。 优缺点 优点&#xff1a; 实现简单&#xff0c;容易理解。适…

用Vue3和p5.js打造一个交互式数据可视化仪表盘

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 基于 Vue.js 集成 p5.js 实现交互式波形图 应用场景介绍 在数据可视化领域&#xff0c;波形图广泛应用于展示动态变化的数据&#xff0c;如声音信号、心跳曲线等。通过动态绘制波形图&#xff0c;用户可以直观…

5.所有权

标题 一、概念二、规则三、示例3.1 变量作用域3.2 所有权的移交&#xff08;深拷贝与浅拷贝&#xff09;3.3 函数与所有权3.4 返回值与作用域3.5 引用的使用 四、切片(&str) 一、概念 所有权是Rust的核心特性。所有程序在运行时都必须管理它们使用计算机内存的方式。Rust的…

InfoComm 2024 直击:千视新品P3和KiloLink技术闪耀亮相

InfoComm 2024 直击&#xff1a;千视新品P3和KiloLink技术闪耀亮相&#xff0c;现场亮点不断 北京时间2024年6月13日&#xff0c;UTC-7时间6月12日&#xff0c;美国视听显示与系统集成展览会InfoComm 2024在美国拉斯维加斯正式开幕。作为全美规模最大、最具影响力的展会&#…

【Test 73 】引用 () 实际的一些用法、常引用问题 详解!

文章目录 1. 常引用的背景2. 字符 a 与 整形 97 是相同的&#xff0c;但是具体是怎么比较的呢 &#xff1f; 1. 常引用的背景 注意&#xff1a; &#x1f427;① 权限可以平移、可以缩小&#xff0c;但是权限 不可以放大。 &#x1f427; 类型转换中间会产生临时变量 2. 字…

[AI资讯·0612] AI测试高考物理题,最高准确率100%,OpenAI与苹果合作,将ChatGPT融入系统中,大模型在物理领域应用潜力显现

AI资讯 国产AI大战高考物理&#xff0c;第1题全对&#xff0c;第2题开始放飞终于放大招了&#xff0c;2024WWDC&#xff0c;苹果开启AI反击战苹果一夜重塑iPhone&#xff01;GPT-4o加持Siri&#xff0c;AI深入所有APPOpenAI确认苹果集成ChatGPT 还任命了两位新高管GPT-4搞不定…

python爬虫入门:批量下载图片

引言: 爬虫也被称为网络蜘蛛(Spider),是一种自动化的软件程序,能够在互联网上漫游,按照一定的规则和算法抓取数据。 爬虫技术广泛应用于搜索引擎、 数据挖掘 、信息提取等领域,是互联网技术的重要组成部分。 摘要: 很多初学者对于一个这样新奇的事务当然愿意去探索,…

【Golang】探索进程资源监控的精妙细节:利用Gopsutil/Process实现高级进程性能和资源信息监控

【Golang】探索进程资源监控的精妙细节&#xff1a;利用Gopsutil/Process实现高级进程性能和资源信息监控 大家好 我是寸铁&#x1f44a; 总结了一篇【Golang】探索进程资源监控的精妙细节&#xff1a;利用Gopsutil/Process实现高级进程性能和资源信息监控的文章✨ 喜欢的小伙伴…

Scrum Day盛大启幕【限时优惠】

关于 Scrum Day 智驭未来&#xff0c;敏捷先行 —— 2024中国Scrum大会启航 在全球数字化转型的浪潮中&#xff0c;敏捷已成为企业脱颖而出的关键。 Scrum中文网携手全球敏捷行业巨擘 —— Scrum.org 联袂呈现年度敏捷盛会 Scrum Day&#xff0c;将于今秋盛大启幕&#xff01…

Ubuntu Linux目录结构

在Linux系统中&#xff0c;最小的数据存储单位为文件。“一切都是文件”是Linux和UNIX一致贯彻的原则。也就是说&#xff0c;在Linux中&#xff0c;所有的数据都是以文件的形式存在的&#xff0c;包括设备。为了便于访问文件&#xff0c;Linux按照一定的层次结构来组织文件系统…

使用宝塔面板 将vue+node+mysql部署至云服务器

数据库部署 1. 导出 数据库 2. 进入宝塔面板 将数据库文件导入至宝塔面板数据库中 验证是否导入成功 点击phpMyAdmin 输入用户名密码 如果没有导入成功&#xff0c;可在此再导入一遍 前端项目部署 1. 将vue项目打包上传至文件 npm run build 打包成dist文件夹 压缩上传 …

解决Apache Doris占用CPU和内存过高

一、导入问题 对于 Doris 来说&#xff0c;一个 INSERT 命令就是一个完整的导入事务。因此不论是导入一条数据&#xff0c;还是多条数据&#xff0c;我们都不建议在生产环境使用这种方式进行数据导入。高频次的 INSERT 操作会导致在存储层产生大量的小文件&#xff0c;会严重影…

音视频开发-- 坑整理

1. 解码时&#xff0c;一定要用avcodec_parameters_to_context()&#xff0c;将流的参数&#xff08;stream->codecpar&#xff09;复制到解码器中&#xff0c;否则某些流可能无法正常解码。 //第七步&#xff0c;给给解码器上下文添加参数, avcodec_parameters_to_context(…