头脑风暴(一):Controller层前端传参接收;在Service层实现类中?为何要build相关构建器?添加套餐业务分析

news2024/11/29 0:56:17

文章目录

  • 1 MyBatis中Controller层List集合接收数据,泛型添加与否
    • 1.1 案例场景
    • 1.2 应该用什么接收
    • 1.3 是否可以用其他方式接收?
    • 1.4 LIst集合接收可否不指定泛型
    • 1.5 mybatis中使用基本类型接收数据?resultType是集合中的元素的类型,并不是集合本身
  • 2 在Service层实现类中,为何要build相关构建器(new对象进行Set方法)
    • 2.1 build方法是干啥的?
    • 2.2 在 Service实现类中,build相关构建器,为何还要与Mapper层建立连接?
    • 2.3 在Mapper的XML映射文件中执行的语句
    • 2.4 思路分析
  • 3 添加套餐业务分析
    • 3.1 业务场景
    • 3.2 业务分析

1 MyBatis中Controller层List集合接收数据,泛型添加与否

1.1 案例场景

需要实现的接口:根据分类id查询菜品,会返回多个菜品

1.2 应该用什么接收

问题场景:那么返回的菜品,应该用什么接收?

回答:应用LIst集合接收

分析:返回的是多组菜品信息参数,因此应用数组或者集合接收,又因为集合相比较与数组,大小可变,因此选择集合。

1.3 是否可以用其他方式接收?

是否可以用实体类接收?

回答:不能,理由:因为实体类只能生成唯一的对象。

分析:返回的是多组菜品信息参数,因此应用数组或者集合接收,又因为集合相比较与数组,大小可变,因此选择集合。

1.4 LIst集合接收可否不指定泛型

在这里插入图片描述

回答:不可以,会出现如上错误,而且mybatis不支持直接用list来接收

总结:List集合不能直接从前端传到后台,需要借助实体类才能接收到集合。

1.5 mybatis中使用基本类型接收数据?resultType是集合中的元素的类型,并不是集合本身

分析:当返回多条一个结果时,并不是在resultType中写成List类型。如下图的错误xml中配置:
在这里插入图片描述
会发生如下错误:在这里插入图片描述

resultType是集合中的元素的类型,并不是集合本身。,正确写法示例:
在这里插入图片描述

2 在Service层实现类中,为何要build相关构建器(new对象进行Set方法)

2.1 build方法是干啥的?

在这里插入图片描述

 Dish build = Dish.builder().status(StatusConstant.ENABLE).categoryId(categoryId).build();

解释:实体类.build,相当于new对象,并进行set构造器方法,为实体类中的对象赋值,实体类本来是无值的。

2.2 在 Service实现类中,build相关构建器,为何还要与Mapper层建立连接?

联系场景解决:
场景:
在这里插入图片描述
在这里插入图片描述

2.3 在Mapper的XML映射文件中执行的语句

 <select id="list" resultType="com.sky.entity.Dish" parameterType="com.sky.entity.Dish">
<!--            <select id="list" resultType="java.util.List">-->
        select *
        from dish
        <where>
            <if test="categoryId != null">
            category_id = #{categoryId}
            </if>
            <if test="status != null">
                and status = #{status}
            </if>
            <if test="name != null">
                and name like ('%',#{name},'%');
            </if>
        </where>
    </select>

相当于:

select * from dish where category_id=11 and  status=1 and name like '%酒%';

2.4 思路分析

在前端获取到 category_id 和 status 的值,然后service业务层,做了处理,即限制查询状态为(StatusConstant.ENABLE,已经被定义成1)在售,同时前端每个类别已经对应了一个category_id,因此以这两属性为限制,在XML中作限制进行查询。

select * from dish where category_id=11 and  status=1 and name like '%酒%';

3 添加套餐业务分析

3.1 业务场景

在这里插入图片描述
在这里插入图片描述
数据库中有,套餐表菜品关系表

3.2 业务分析

  • 首先,前端往后端传入参数,包含套餐信息菜品、套餐信息(在添加菜品那个按钮上),后端定义的DTO层接收到数据。
    在这里插入图片描述
  • 其次,接收到service层进行业务处理,先是将setmealDTO接收到的数据,拷贝到setmeal实体类中
    在这里插入图片描述
  • 紧接着,再将实体类setmeal对象中数据根据SQL语句插入套餐表中setmealMapper.insert(setmeal);
  • 再然后,获取下数据库中套餐的主键ID
    Long setmealId = setmeal.getId();
  • 然后,获取后端接收到setmealDTO实体类中每一个SetmealDishes集合(前端可以传多个菜品,每个套餐可以包含多个菜品)
    List<SetmealDish> setmealDishes = setmealDTO.getSetmealDishes();
  • 紧接着遍历所获得的的SetmealDishes集合,得到每一个套餐菜品的信息
    setmealDishes.forEach(setmealDish -> { setmealDish.setSetmealId(setmealId); });
  • 最后,再将每一个SetmealDishes信息插入到数据库的SetmealDishes表中
    setmealDishMapper.insertBatch(setmealDishes);

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

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

相关文章

论文阅读笔记《GAMnet: Robust Feature Matching via Graph Adversarial-Matching Network》

核心思想 本文提出一种基于图对抗神经网络的图匹配算法&#xff08;GAMnet&#xff09;,使用图神经网络作为生成器分别生成源图和目标图的节点的特征&#xff0c;并用一个多层感知机作为辨别器来区分两个特征是否来自同一个图&#xff0c;通过对抗训练的办法提高生成器特征提取…

uniCloud基础使用-好文

云函数可以看做java或者php&#xff0c;作为后端服务cloudfunctions/myCloud/index.jsexports.main async (event, context) > {const { name, age } eventreturn 我是${name},今年${age} };pages/index/index.vue//callFunction方法 在前端和云端都可以调用另一个云函数 …

三十而立却被裁,打工人要如何应对职场危机?

又到金三银四就业季&#xff0c;对于部分职场人来说&#xff0c;年龄成为了他们找工作的最大限制。 因为绝大部分企业招聘中层干部以下岗位的时候&#xff0c;都会要求年龄不超过35周岁&#xff0c;再加上每年千万毕业生涌入社会&#xff0c;竞争程度相当激烈&#xff0c;这就导…

QML 模型(ListModel)

LIstModel&#xff08;列表模型&#xff09; ListModel 是ListElement定义的简单容器&#xff0c;每个定义都包含数据角色。内容可以在 QML 中动态定义或显式定义。 属性&#xff1a; count模型中数据条目的数量dynamic动态角色&#xff0c;默认情况下&#xff0c;角色的类型…

Android 进程间通信机制(一) IPC概念和模型

一. 前言 一直想把Binder机制认识清楚, 但是它涉及Android系统的Framework, Native, kernel层, 就需要你要有 C C基础阅读底层源码的能力, 目前笔者的水平,对Binder 在Native 和kernel层的实现原理和机制也是懵逼状态, 真的是博大精深, 故现阶段先把看懂和理解清楚的整理出来…

内核链表分析

内核链表 文章目录内核链表list_head创建链表添加节点1. list_add2. list_add_tail 接口删除节点宿主结构1.找出宿主结构 list_entry(ptr, type, member)2 container_of3. 宿主结构的遍历list_head 在 Linux 内核中&#xff0c;提供了一个用来创建双向循环链表的结构 list_hea…

海康摄像头使用RTSP

1.协议格式。海康威视IP摄像头rtsp协议地址如下&#xff1a;rtsp://[username]:[passwd][ip]:[port]/[codec]/[channel]/[subtype]/av_stream主码流&#xff1a;rtsp://admin:12345192.168.1.64:554/h264/ch1/main/av_streamrtsp://admin:12345192.168.1.64:554/MPEG-4/ch1/mai…

SpringCloud微服务保护

微服务保护微服务保护1.初识Sentinel1.1.雪崩问题及解决方案1.1.1.雪崩问题1.1.2.超时处理1.1.3.仓壁模式1.1.4.断路器1.1.5.限流1.1.6.总结1.2.服务保护技术对比1.3.Sentinel介绍和安装1.3.1.初识Sentinel1.3.2.安装Sentinel1.4.微服务整合Sentinel2.流量控制2.1.簇点链路2.1.…

java基础学习 day51 (匿名内部类)

1. 什么是匿名内部类&#xff1f; 隐藏了名字的内部类&#xff0c;实际名字为&#xff1a;外部类名$序号可以写在成员位置&#xff0c;为没有名字的成员内部类也可以写在局部位置&#xff0c;为没有名字的局部内部类 2. 匿名内部类的格式&#xff1f; new 类名/接口名() { 重…

深入理解AQS

概念设计初衷&#xff1a;该类利用 状态队列 实现了一个同步器&#xff0c;更多的是提供一些模板方法&#xff08;子类必须重写&#xff0c;不然会抛错&#xff09;。 设计功能&#xff1a;独占、共享模式两个核心&#xff0c;state、Queue2.1 statesetState、compareAndSetSta…

SpringMVC简单仿写

之前我分享过SpringMVC的基本原理与配置&#xff08;原文链接&#xff1a;https://blog.csdn.net/L170311/article/details/129339120&#xff09;,为了更深层次的学习&#xff0c;精益求精&#xff0c;手动仿写了一个MVC原理实现demo&#xff0c;一起学习一下吧 结构目录&…

使用预训练模型自动续写文本的四种方法

作者&#xff1a;皮皮雷 来源&#xff1a;投稿 编辑&#xff1a;学姐 这篇文章以中文通用领域文本生成为例&#xff0c;介绍四种常用的模型调用方法。在中文文本生成领域&#xff0c;huggingface上主要有以下比较热门的pytorch-based预训练模型&#xff1a; 本文用到了其中的ue…

RFID在技术在工业产线上的应用

RFID在技术在工业产线上的应用一工业产线需求制造业生产线几乎每月都要损耗大量物料&#xff0c;并且生产结果与预期因为有误差而影响交货的情况时有发生&#xff0c;生产线也往往因人为原因造成种种误差。将RFID标签贴在生产物料或产品上&#xff0c;可自动记录产品的数量、规…

学完Java只能在互联网公司任职吗?

当然不是只有互联网公司需要软件&#xff0c;需要开发技术人员&#xff0c;传统行业、新经济领域都有软件项目需求&#xff1b;Java也不是只能做网站、企业应用&#xff0c;还可以用于嵌入式、游戏…… 互联网时代的手机、智能电视、家具、机械设备等各种有形产品都将会嵌入智…

二、Neo4j源码研究系列 - 单步调试

二、Neo4j源码研究系列 - 单步调试 一、背景介绍 上一篇我们已经把了neo4j的源码准备以及打包流程完成了&#xff0c;本篇将讲解如何对neo4j进行单步调试。对于不了解如何编译打包neo4j的读者&#xff0c;请阅读《一、Neo4j源码研究系列 - 源代码准备》。 大纲&#xff1a; …

【改机教程】iOS系统去除小黑条,改拍照声、拨号音、键盘音,不用越狱,支持所有机型

大家好&#xff0c;上次给大家分享了几个iOS系统免越狱改机教程 今天带来最新的教程&#xff0c;这次修改利用的是同一个漏洞&#xff0c;由外网大神 tamago 开发&#xff0c;国内大神冷风 进行汉化和优化 可以修改的地方包括 去除底部小黑条 dock栏透明 桌面文件夹透明 桌面…

golang 占位符还傻傻分不清?

xdm &#xff0c;写 C/C 语言的时候有格式控制符&#xff0c;例如 %s , %d , %c , %p 等等 在写 golang 的时候&#xff0c;也是有对应的格式控制符&#xff0c;也叫做占位符&#xff0c;写这个占位符&#xff0c;需要有对应的数据与之对应&#xff0c;不能瞎搞 基本常见常用…

Cobalt Strike---(2)

数据管理 Cobalt Strike 的团队服务器是行动期间Cobalt Strike 收集的所有信息的中间商。Cobalt Strike 解析来 自它的 Beacon payload 的输出&#xff0c;提取出目标、服务和凭据。 如果你想导出 Cobalt Strike 的数据&#xff0c;通过 Reporting → Export Data 。Cobalt Str…

CentOS7自签SSL证书并配置nginx

一、生成SSL证书 1、安装依赖包 yum install -y openssl openssl-devel 2、生成私钥&#xff0c;会让你输入一个 4~2048 位的密码&#xff0c;你需要暂时记住这个密码 openssl genrsa -des3 -out server.key 2048 输入两遍相同的密码 3、生成CSR(Certificate Signing Request …

Postgresql-12.5 visual studio-2022 windows 添加pg工程并调试

pg内核学习&#xff0c;记录一下 文章目录安装包编译安装VS添加Postgresql工程调试源码安装包 &#xff08;1&#xff09;perl下载 https://www.perl.org/get.html &#xff08;2&#xff09;diff下载 http://gnuwin32.sourceforge.net/packages/diffutils.htm &#xff08;…