尚品汇-(六)

 (1)属性的添加修改

 

平台属性对象: 

package com.atguigu.gmall.model.product;import com.atguigu.gmall.model.base.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;import java.util.List;/*** <p>* BaseAttrInfo* </p>**/
@Data
@ApiModel(description = "平台属性")
@TableName("base_attr_info")
public class BaseAttrInfo extends BaseEntity {private static final long serialVersionUID = 1L;@ApiModelProperty(value = "属性名称")@TableField("attr_name")private String attrName;@ApiModelProperty(value = "分类id")@TableField("category_id")private Long categoryId;@ApiModelProperty(value = "分类层级")@TableField("category_level")private Integer categoryLevel;//	平台属性值集合@TableField(exist = false)private List<BaseAttrValue> attrValueList;}

属性值对象:

package com.atguigu.gmall.model.product;import com.atguigu.gmall.model.base.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;/*** <p>* BaseAttrValue* </p>**/
@Data
@ApiModel(description = "平台属性值")
@TableName("base_attr_value")
public class BaseAttrValue extends BaseEntity {private static final long serialVersionUID = 1L;@ApiModelProperty(value = "属性值名称")@TableField("value_name")private String valueName;@ApiModelProperty(value = "属性id")@TableField("attr_id")private Long attrId;
}

 

 

BaseManageController继续添加接口:

/*** 保存平台属性方法* @param baseAttrInfo* @return*/
@PostMapping("saveAttrInfo")
public Result saveAttrInfo(@RequestBody BaseAttrInfo baseAttrInfo) {// 前台数据都被封装到该对象中baseAttrInfomanageService.saveAttrInfo(baseAttrInfo);return Result.ok();
}

继续在ManageService添加service接口 

/*** 保存平台属性方法* @param baseAttrInfo*/
void saveAttrInfo(BaseAttrInfo baseAttrInfo);

 

两个表的Mpper在前面已经创建: 

实现类中实现:

为了让平台属性跟平台属性值一块成功或失败,需要加上事务: IO、SQL异常也让他回滚,加上rollbackFor

@Override
@Transactional(rollbackFor = Exception.class)
public void saveAttrInfo(BaseAttrInfo baseAttrInfo) {// 什么情况下 是添加,什么情况下是更新,修改 根据baseAttrInfo 的Id// baseAttrInfoif (baseAttrInfo.getId() != null) {// 修改数据平台属性baseAttrInfoMapper.updateById(baseAttrInfo);} else {// 新增平台属性// baseAttrInfo 插入数据baseAttrInfoMapper.insert(baseAttrInfo);}// baseAttrValue 平台属性值// 修改:通过先删除{baseAttrValue},在新增的方式!// 删除条件:baseAttrValue.attrId = baseAttrInfo.idQueryWrapper queryWrapper = new QueryWrapper<BaseAttrValue>();queryWrapper.eq("attr_id", baseAttrInfo.getId());baseAttrValueMapper.delete(queryWrapper);// 获取页面传递过来的所有平台属性值数据List<BaseAttrValue> attrValueList = baseAttrInfo.getAttrValueList();if (attrValueList != null && attrValueList.size() > 0) {// 循环遍历for (BaseAttrValue baseAttrValue : attrValueList) {// 获取平台属性Id 给attrIdbaseAttrValue.setAttrId(baseAttrInfo.getId()); // ?baseAttrValueMapper.insert(baseAttrValue);}}
}

集合判断是否为空:

接受的参数id为空,当往属性表里添加数据后会生成id 

 

属性表添加数据后生成id111 

 

属性表: 

属性值表 

 

修改带上id:

数据库进行了修改: 

 

(2)平台属性值回显

BaseManageController继续添加接口:

@GetMapping("getAttrValueList/{attrId}")
public Result<List<BaseAttrValue>> getAttrValueList(@PathVariable("attrId") Long attrId) {BaseAttrInfo baseAttrInfo = manageService.getAttrInfo(attrId);List<BaseAttrValue> baseAttrValueList = baseAttrInfo.getAttrValueList();return Result.ok(baseAttrValueList);
}

 继续在ManageService添加service接口 

接口
选中准修改数据 , 根据该attrId 去查找AttrInfo,该对象下 List<BaseAttrValue> !
所以在返回的时候,需要返回BaseAttrInfo
/*** 根据attrId 查询平台属性对象* @param attrId* @return*/
BaseAttrInfo getAttrInfo(Long attrId);

实现类实现:

实现类
@Override
public BaseAttrInfo getAttrInfo(Long attrId) {BaseAttrInfo baseAttrInfo = baseAttrInfoMapper.selectById(attrId);// 查询到最新的平台属性值集合数据放入平台属性中!baseAttrInfo.setAttrValueList(getAttrValueList(attrId));return baseAttrInfo;
}/*** 根据属性id获取属性值* @param attrId* @return*/
private List<BaseAttrValue> getAttrValueList(Long attrId) {// select * from baseAttrValue where attrId = ?QueryWrapper queryWrapper = new QueryWrapper<BaseAttrValue>();queryWrapper.eq("attr_id", attrId);List<BaseAttrValue> baseAttrValueList = baseAttrValueMapper.selectList(queryWrapper);return baseAttrValueList;
}

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

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

相关文章

基于Pytorch框架构建ResNet模型

Pytorch 一、训练模型1.导入资源包2.定义数据预处理3.读取数据 二、定义卷积神经网络1.导入必要的库2.定义名为convolutional_block的卷积块类3.定义了一个名为identity_block的恒等块类4.定义了一个名为Resnet的深度卷积神经网络类 三、创建模型1. 检查GPU设备2. 训练过程 四、…

玄机平台流量特征分析—蚂蚁爱上树

前言 依旧是流量分析&#xff0c;老规矩先看看要求。 步骤1.1 这里要求我们找到admin的密码&#xff0c;ctrlf筛选出product2.php的访问包&#xff0c;因为只有这类型流量包才有东西。其他的流量包都是没啥用的&#xff0c;至于我为啥知道&#xff0c;因为每个类型的流量包我…

地信大四,实习重要吗?怎么找实习岗位?

“地信怎么找实习啊&#xff1f;” “实习三个月以上&#xff1f;暑假只有两个月啊” “什么岗位实习比较有用&#xff1f;” “助理类岗位是做什么&#xff1f;” …… 同学们好啊&#xff0c;不知不觉24年已经是过完一小半了&#xff0c;24届毕业的同学们也差不多就要迎来…

测试工程师如何学习系统架构

面对同一个“知识点”不同的工作角色需要考虑的问题不一样&#xff0c;比如在系统架构中会使用到消息队列功能&#xff0c;系统架构师&#xff0c;开发人员&#xff0c;测试人员&#xff0c;运维人员&#xff0c;需求人员等需要考虑的问题不一样。 系统架构师在考虑消息队列功能…

数电大作业-四输入表决器

&#xff08;PCB和multisim仿真画的有很大问题&#xff0c;没有VCC输入和GND&#xff0c;没学过直接裸画的&#xff0c;之后会好好看视频学习&#xff09; 应用背景&#xff1a; 四个评委&#xff0c;三个及以上评委同时按下通过按钮时&#xff0c;选手才能通过。否则不通过。…

自动驾驶ADAS

1 ToF摄像头分类 1.1 ToF原理 类似雷达测距&#xff0c;生成3D点云&#xff0c;或者叫3D贴图。ToF相机的分辨率一般在3万像素左右。ToF距离计算公式如图所示。 Figure 1-1 ToF距离计算公式 D&#xff1a;距离 c&#xff1a;光速 PHI&#xff1a;相位差 fmod&#xff1a;调制频率…

创新指南|品牌电商新策略:五大转型思路与RGM举措

在流量红利过去的背景下&#xff0c;品牌电商面对多渠道运营的难题&#xff0c;如缺乏统盘经营、绩效管理分散、价格战失控、用户体验不足以及流量过度依赖&#xff0c;品牌电商如何有效应对这些挑战&#xff0c;本文从5个维度探讨全渠道电商RGM破局之路&#xff0c;实现品牌的…

pyppeteer模块经常使用的功能,相关操作案例

官方仓库地址&#xff1a;https://github.com/miyakogi/pyppeteer 官方文档地址&#xff1a;API Reference — Pyppeteer 0.0.25 documentation Selenium环境的相关配置比较繁琐&#xff0c;此外&#xff0c;有的网站会对selenium和webdriver进行识别和反爬&#xff0c;因此在…

【MySQL】数据库——事务

一.事务概念 事务是一种机制、一个操作序列&#xff0c;包含了一组数据库操作命令&#xff0c;并且把所有的命令作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这一组数据库命令要么都执行&#xff0c;要么都不执行事务是一个不可分割的工作逻辑单元&#xff0c;在数…

【因果推断python】54_效应异质性和非线性带来的挑战2

目录 Continues Treatment and Non Linearity Key Concepts Continues Treatment and Non Linearity 我们只是深入探讨了二元结果增加异质性治疗效果分析难度的一个例子。但这种现象并不局限于市场营销中的转换问题。例如&#xff0c;2021 年&#xff0c;全球成功向公众提供了…

深度学习 --- stanford cs231学习笔记五(训练神经网络的几个重要组成部分之三,权重矩阵的初始化)

权重矩阵的初始化 3&#xff0c;权重矩阵的初始化 深度学习所学习的重点就是要根据损失函数训练权重矩阵中的系数。即便如此&#xff0c;权重函数也不能为空&#xff0c;总是需要初始化为某个值。 3&#xff0c;1 全都初始化为同一个常数可以吗&#xff1f; 首先要简单回顾一下…

仿微信图片查看器`WPF`实现`ListBox` 鼠标滑动批量选中与反选效果

看到微信中&#xff0c;上传图片时的图片查看功能可以通过手指长按并滑动实现多选&#xff0c;于是为解析实现思路&#xff0c;也通过WPF 使用ListBox 实现了一版案例。 参考效果 微信效果如下&#xff0c;支持图片单选和鼠标长按滑动实现批量操作。 WPF模仿效果&#xff1a…

Mysql: SQL-DDL

一.SQL通用语法 1.SQL可以单行或者多行书写,以分号结尾。 2.SQL语句可以使用空格/缩进来增强语句的可读性。 3.MySQL数据库的SQL语句不区分大小写,关键字建议用大写。 4.注释: 单行注释:注释内容或#注释内容(Mysql特有) 多行注释&#xff1a;/*注释内容*/ 二.SQL分类 1.D…

信息学奥赛初赛天天练-34-CSP-J2021完善程序-按位异或、模拟算法、数组模拟环、约瑟夫问题应用

PDF文档公众号回复关键字:20240624 2021 CSP-J 完善程序3 1 完善程序 (单选题 &#xff0c;每小题3分&#xff0c;共30分) &#xff08;Josephus问题&#xff09;有n个人围成一个圈&#xff0c;依次标号0至n-1。从0号开始&#xff0c;依次 0&#xff0c;1&#xff0c;0&#…

0801功率放大问题

3个学时讲一个电路&#xff08;两个共集共集并联&#xff09;&#xff0c;4个问题&#xff0c;发展线索 丙类放大电路用在高频通讯行业&#xff0c;低频功放是甲类&#xff0c;乙类&#xff0c;甲乙类 PT三极管的损耗 Pv电源提供的功率 现代模电通常使用方法b 只有交流…

用Vue3打造一个交互式营养追踪仪表盘

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 使用 Vue.js 构建营养仪表盘卡片 应用场景介绍 营养仪表盘卡片是一个可视化工具&#xff0c;用于跟踪个人的营养摄入情况。它通常包含以下信息&#xff1a; 卡路里摄入目标和进度营养成分&#xff08;如脂肪…

2024中国·淮安高端人才精英赛北京分站赛首战告捷

“诚意满淮&#xff0c;创赢未来”&#xff01;6月20-21日&#xff0c;2024中国淮安高端人才精英赛首场分站赛在北京产业创新中心顺利举办。淮安市科技局党组书记、局长胡长青&#xff0c;淮安市委组织部人才处处长沈雪娇&#xff0c;淮安经开区党工委委员、管委会副主任、科技…

C++(part2、3-Linux系统编程+数据库项目):Linux网络云盘

文章目录 一、项目需求分析1.一期&#xff1a;命令行解析(1)cd(用栈管理)、ls、pwd(2)puts、gets(3)mkdir、touch、rmdir、rm 2.二期&#xff1a;密码验证、日志、断点续传、大文件传输(1)密码验证(2)日志(3)断点续传(4)大文件传输 3.三期&#xff1a;用户注册、用户登录、虚拟…

springboot+vue+mybatis穷游管理系统+PPT+论文+讲解+售后

随着现在网络的快速发展&#xff0c;网上管理系统也逐渐快速发展起来&#xff0c;网上管理模式很快融入到了许多企业的之中&#xff0c;随之就产生了“基于vue的穷游管理系统”&#xff0c;这样就让基于vue的穷游管理系统更加方便简单。 对于本基于vue的穷游管理系统的设计来说…

企业文件传输系统只能传输?分享功能同样重要!(下)

上篇我们讲述了企业大文件传输的重要性以及镭速在传输方面的优势&#xff0c;同时企业文件的快速共享显得尤为重要。镭速软件在这方面的表现一样尤为突出&#xff0c;它不仅提供了强大的文件传输功能&#xff0c;而且在文件分享方面也有其独到之处。本文将探讨镭速软件在文件分…