谷粒商城 spu保存

news/2024/5/4 14:46:39/文章来源:https://blog.csdn.net/qq_51682771/article/details/127335374

主要记录一下收获

spu 一类物品
sku 具体什么物品(由销售属性组合定义)
在这里插入图片描述

写保存接口步骤

  1. 对比前端拿到的VO和实际的POJO属性有哪些差异
  2. 将差异属性通过其他方式拿到,其余属性直接BeanUtils.copyProperties
  3. 保存,保存时还有其他关联表,这些应该交给保存serviceImp来处理
    例如spu保存sku,保存sku还要再保存图片、会员等表,这些应该交给skuService,spu只需要保存sku即可

远程调用

TO

TO是两个微服务传输时使用,如果是服务和前端传输则是VO,声明在common中

  • 减少冗余数据的传输,可以挑选需要的属性封装成TO
  • 利于两边数据的传输,发送方声明的类,接收方不能使用,TO解决了这个问题

具体操作

  1. 发送方新建feign接口
  2. 接收方controller声明feign接口对应的方法
  3. 发送方使用feign接口

下面是一个远程调用的例子,sku (product服务) 和 bounds(coupon服务)

  • to

在这里插入图片描述

  • feign
    在这里插入图片描述
  • counpon 服务中的接收方,对数据的处理也交给了service
    在这里插入图片描述
  • 注意点
    双方入口@EnableDiscoveryClient (注册发现)
    调用方入口 @EnableFeignClients (扫描feign接口)
    feign接口 @FeignClient(name = "服务名") (告诉注册中心,调用的服务名)
  • 易错点
    地址前面加/

查操作

条件封装
  • 目前感觉这样写很清楚,参数一般可以强转为String,然后判断这个参数是否需要作为条件
  • POJO 转 VO 可以使用stream中的map()
    @Override public PageUtils queryPageByCondition(Map<String, Object> params) {QueryWrapper<SkuInfoEntity> wrapper = new QueryWrapper<>();// JudgeParamInMap.ContainAndNotZeroAndNotEmpty 是单独封装作为工具类的if(JudgeParamInMap.ContainAndNotZeroAndNotEmpty(params,"catelogId")){wrapper.and(w->w.eq("catalog_id",params.get("catelogId")));}if(JudgeParamInMap.ContainAndNotZeroAndNotEmpty(params,"brandId")){wrapper.and(w->w.eq("brand_id",params.get("brandId")));}if(JudgeParamInMap.ContainAndNotZeroAndNotEmpty(params,"key")){wrapper.and(w->w.eq("sku_id",params.get("key")).or().eq("sku_name",params.get("key")));}if(JudgeParamInMap.ContainAndNotZeroAndNotEmpty(params,"min")){wrapper.and(w->w.ge("price",params.get("min")));}if(JudgeParamInMap.ContainAndNotZeroAndNotEmpty(params,"max")){wrapper.and(w->w.le("price",params.get("max")));}IPage<SkuInfoEntity> page = this.page(new Query<SkuInfoEntity>().getPage(params),wrapper);return new PageUtils(page);}

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

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

相关文章

Python 装饰器进阶

一、装饰器的执行流程 上一篇文章介绍了装饰器的概念和基本使用&#xff0c;这篇我们来深入探索一下 python 的装饰器。 1.1 简单装饰器例子 我们先看一个例子&#xff0c;控制台会输出什么&#xff1f; def decorator(func):def inner():print("inner start")fu…

数据结构与算法之Python实现——线性表(一)

&#x1f433; 前言 数据结构与算法的一刷是在前几个月的时候用C语言区实现的&#xff0c;那时候也刚开始接触C语言&#xff0c;只知道个C语言的大概&#xff0c;然后却不怎么会应用。 之后在网上买了一本数据结构的书后就开始用C语言去学习。在用C语言去学习的过程中&#x…

pytorch 神经网络特征可视化

可参考博客 Pytorch可视化模型任意中间层的类激活热力图(Grad-CAM)_潜行隐耀的博客-CSDN博客_pytorch热力图 Pytorch输出网络中间层特征可视化_Joker-Tong的博客-CSDN博客_输出网络中间特征图 GitHub - utkuozbulak/pytorch-cnn-visualizations: Pytorch implementation of …

浅谈IT系统性能优化

一个刚上线的IT系统,往往负载压力不大,所以不会存在什么性能问题。这时,人们大多只关心系统的功能性和用户体验。但是,随着时间推移,用户量和数据量都比刚上线的时候要多很多,高并发和大数据场景下,系统遇到性能瓶颈,持续不能改善最终导致系统崩溃。这对于做C端的开发人…

<Python的变量创建与使用>——《Python》

目录 1.常量和表达式 2.变量和类型 3.变量的语法 后记&#xff1a;●由于作者水平有限&#xff0c;文章难免存在谬误之处&#xff0c;敬请读者斧正&#xff0c;俚语成篇&#xff0c;恳望指教&#xff01; …

python语言思想

python语言基础与应用 超级计算器 python语言解释器 为啥选用PYCHARM create new project: NANE 选择解释器 open &#xff0c;选择打开文件或者加入project 注意对齐与缩进 注意字母大小写、空格 注意左右括号配对 错误是常见的&#xff0c;跟BUG和缺陷斗争得到过程 观察代…

08 字符串连接符 “+“ 导致的 check cast 的省略

前言 // 年轻时候&#xff0c;到了冬天&#xff0c;家人让你穿秋裤&#xff0c;你不仅不穿秋裤&#xff0c;还露着脚脖子&#xff0c;如果有人劝你&#xff0c;你会嫌他唠叨。而等你岁数大一点&#xff0c;天气一冷&#xff0c;身体受不了&#xff0c;就自觉把秋裤穿上了。 呵…

图论二分图问题讲解-染色法和匈牙利算法

二分图 概述&#xff1a; 二分图又称作二部图&#xff0c;是图论中的一种特殊模型。 设G(V,E)是一个无向图&#xff0c;如果顶点V可分割为两个互不相交的子集(A,B)&#xff0c;并且图中的每条边&#xff08;i&#xff0c;j&#xff09;所关联的两个顶点i和j分别属于这两个不同的…

使用Python将微信和支付宝账单导入随手记

简介 本文介绍如何使用Python将微信和支付宝账单转换为可以导入随手记的文件&#xff0c;实现微信和支付宝账单的批量导入。 需求&#xff1a; 1、需要将支付宝和微信上的支出账单自动或半自动地导入到随手记中 已知信息&#xff1a; 1、支付宝和微信的app端都可以导出csv…

引导过程与服务控制

目录: 1、引导过程总览 2、备份与恢复第一块硬盘前512字节 3、修复GRUB引导故障 4、忘记密码 5、开关系统服务控制Linux操作系统引导过程引导过程总览: 开机自检→MBR引导→GRUB菜单→加载内核→init进程初始化 1、bios 检查硬件设置grub功能和组成 bootloader:引导加载器,…

npm install ,npm ERR code 401 Incorrect or missing password 错误原因与.npmrc 配置文件的使用

前言&#xff1a;前端去维护项目时&#xff0c;通过 git clone 下来以后&#xff0c;经常是直接 npm install 去安装项目需要的 node_modules &#xff0c;但是往往很多项目不是我们自己写的&#xff0c;或者从 GitHub 上面 clone 的开源项目&#xff0c;这个时候出现问题就很难…

【ASM】字节码操作 转换已有的类 ClassReader 删除方法 添加方法

文章目录 1.概述2.案例2.1 删除方法2.2 添加方法2.3小总结3.总结1.概述 上一篇文章:【ASM】字节码操作 转换已有的类 ClassReader 修改字段信息 删除字段 增加字段 在上一篇文章中我们学到了如何添加字段与删除字段。 本章节我们来尝试修改方法和删除方法。 2.案例 2.1 删…

搜索查找类

查找搜索类\color{blue}{\huge{查找搜索类}}查找搜索类 find find指令从指定目录向下递归地便利各个子目录&#xff0c;如果在/root目录下进行寻找&#xff0c;根据文件目录的树状结构&#xff0c;就是进行全盘查找&#xff0c;非常浪费时间&#xff0c;所以使用find 进行寻找…

MATLAB | 绘图复刻(二) | 折线图+误差棒+柱状图+散点抖动+灰色背景+图片叠加

看到gzh R语言ggplot2科研绘图发布了一篇绘图复刻类文章&#xff0c;复刻了&#xff1a; Nature(IF49.962)文章(Gut microbiota modulates weight gain in mice after discontinued smoke exposure)其中的Figure.1b&#xff0c;绘制效果十分惊艳&#xff0c;手痒就想拿MATLAB也…

RocketMQ 消费者Rebalance算法 解析——图解、源码级解析

&#x1f34a; Java学习&#xff1a;Java从入门到精通总结 &#x1f34a; 深入浅出RocketMQ设计思想&#xff1a;深入浅出RocketMQ设计思想 &#x1f34a; 绝对不一样的职场干货&#xff1a;大厂最佳实践经验指南 &#x1f4c6; 最近更新&#xff1a;2022年10月15日 &#…

(附源码)计算机毕业设计大学生网上书店

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

(附源码)计算机毕业设计电脑外设销售系统小程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

操作系统基本功能(操作系统)

目录 一、处理机管理 二、存储器管理 三、设备管理 四、文件管理 五、作业管理 一、处理机管理 中央处理机&#xff08;CPU&#xff09;是计算机系统中一个举足轻重的资源。用户程序进入内存后&#xff0c;只有获得CPU&#xff0c;才能真正得以运行。 为了提高CPU的利用率…

前端都应该了解的 NodeJs 知识及原理浅析

node.js 初探 Node.js 是一个 JS 的服务端运行环境&#xff0c;简单的来说&#xff0c;它是在 JS 语言规范的基础上&#xff0c;封装了一些服务端的运行时对象&#xff0c;让我们能够简单实现非常多的业务功能。 如果我们只使用 JS 的话&#xff0c;实际上只是能进行一些简单…

docker mysql8使用SSL及使用openssl生成自定义证书

《docker安装MySQL8》 修改my.cnf vi /docker_data/mysql/conf/my.cnf[client] default-character-setutf8mb4 [mysql] default-character-setutf8mb4 [mysqld] character-set-serverutf8mb4 default_authentication_pluginmysql_native_password #增加ssl ssl保存&#xff0…