杂项6

简介: 本文介绍了软件开发中的多个关键技术点,包括数据回显、分页查询、AOP操作、文件上传、自增ID获取以及单表与多表更新的区别。内容涵盖了从前端到后端的完整流程,重点解析了分页实现、数据一致性处理及复杂表操作的优化方法,适用于Java Web开发场景。

回显

1.根据id进行查询

2.修改数据

点击修改,实质上id传过了,会先进行id的查询,就造成了数据的回显

与分页不同,分页是两个结果的判断,回显是先后操作

分页步骤

1.接收参数controller(返回pageresult结果)

2.serviceimpl

   步骤

2.1  使用pagehelper进行分页(传入controller接受的 page,pagesize)

2.2   调用mapper层方法(分页查询本质上返回的是一个实体类的集合)

2.3 强转为page类型(方便传递 total result(查询的结果))

2.4 传回 pageresult的对象(把 total result传入)

3.调用mapper层方法

注入

controller

service实现类

mapper接口

aop理解如何获取方法,操作步骤

1.定义注解

2.把注解放在要进行aop的类

3.通过around进行切入

4.如何获取方法的信息(详细。所有);

5.使用around时,必须使用proceed显示调用执行,否则不会生效

图片上传

注解只能使用@RequestParam 或 @ModelAttribute(无论请求参数在哪里)

  • 文件上传必须用 @RequestParam 或 @ModelAttribute,因为它们支持 multipart/form-data。
  • 如果需要同时处理 JSON 数据,有两种方案:
  1. 将 JSON 作为普通表单字段(字符串)传递,手动解析(如示例 2)。
  2. 分两次请求:先上传文件,再提交 JSON 数据。


分页

  1. 正常返回结果(调用servce)
  2. service 层返回结果是pageResult(自定义,不用hutool)

2.1先使用pagehelp进行数据统计,后面调用mapper获得所要展示的产品的集合

2.2把得到集合用page转化

2.3 把返回total和rows

3.mapper层查询,要判断(根据复选框)

示例

@Override
public PageResult FenYeQuery(DishPageQueryDTO dishPageQueryDTO) {
  Page<Object> objects = PageHelper.startPage(dishPageQueryDTO.getPage(), dishPageQueryDTO.getPageSize());
  List<Dish> dishes = dishMapper.fenYeQuery(dishPageQueryDTO);
        Page<Dish> dishPage=(Page<Dish>) dishes;
  return   new PageResult(dishPage.getTotal(),dishPage.getResult());
}


如何获取自增id

示例: 员工表中包括经历表(员工表是自增id) 要在插入员工的语句中添加useGeneratedKeys="true" keyProperty="id",后面才可以直接获取自增的id

通过一个表的id去查询另一个表是否有匹配的数据(一般是e_id)

方法1:直接返回结果(就是用包装类型integer接收)

要先判断是否为null,再判断是否大于0(e_id都是大于0的)

方式2:使用统计(用count)(优解)

count(*) 的特性:SQL 的 count(*) 函数会统计符合条件的记录数,无论是否存在匹配的记录,结果都至少为 0,不会返回 null。

原因:

  • 当有匹配记录时:setmeal_id是具体的整数(如 1、2),MyBatis 会将其映射为Integer对象(值为 1、2 等)。
  • 当无匹配记录时:查询结果是空集(没有任何行),此时 MyBatis 无法获取到setmeal_id的值,会将返回值映射为null(因为没有数据可填充)。

关键点:数据库中 “没有查询到数据” 和 “查询到的值为 0” 是完全不同的情况:

  • 前者是 “无结果”,映射为null;
  • 后者是 “有结果但值为 0”,映射为Integer 0。

针对更新操作

单表

多表(先回显此时所有的数据已经准备好,如果要修改某一项,那么其他的数据会再传输一份)

比如: 信息是:   a b  要修改b->c  第一步回显 显示出 a b 第二步 在前端修改 b->c  最终结果 是 a c 然后点击修改传递的是全部的数据,不是只传递修改的部分

单表更新 vs 多表更新的核心差异

场景

单表更新(如只改套餐名称)

多表更新(如改套餐名称 + 改关联餐品)

涉及表

仅 1 个表(如套餐表)

至少 2 个表(套餐表 + 套餐 - 餐品关联表)

核心操作

直接根据主键更新字段(如update 套餐表 set 名称=新名称 where id=xxx

)

1. 更新主表(套餐表)字段;
2. 处理关联表(新增 / 删除 / 修改关联关系)

复杂度

低(只需保证单条记录正确)

高(需保证主表和关联表数据 “匹配”,比如关联表不能出现主表不存在的套餐 ID)

一致性要求

单表内数据正确即可

必须保证 “主表改了,关联表也同步改”,否则会出现 “套餐存在但关联餐品丢了” 或 “关联餐品指向不存在的套餐” 等问题

service 的逻辑拆解如下,重点看 “主表” 和 “关联表” 的不同处理方式:

  • 主表的信息是 “单条独立记录”,改的时候直接改对应字段就行;
  • 关联表的信息是 “一堆关系的集合”,改的时候很难精确比对每一条关系,所以用 “全删全插” 的方式保证结果正确,还省事儿。
相关文章
|
存储 数据可视化 数据挖掘
基于大数据的电影可视化、推荐与票房预测系统
本系统基于Python与Flask框架,结合Echarts等技术,实现电影数据的采集、存储与可视化展示。通过对票房、评分、评论等数据的分析,生成图表与词云,帮助用户直观理解电影市场趋势,支持决策制定与观影推荐,提升电影行业的数据分析能力与用户体验。
|
人工智能 算法 调度
端侧宠物识别+拍摄控制智能化:解决设备识别频次识别率双低问题
随着宠物成为家庭重要成员,其影像创作需求激增。传统相机“人脸优先”逻辑难以应对宠物拍摄的复杂场景,如毛发模糊、动态多变、光照反差大等。本文基于端侧AI与影像工程经验,系统梳理宠物识别驱动的对焦曝光重构技术,结合算法与产业实践,构建从检测到参数调度的完整解决方案,推动拍摄技术向“宠物优先”转型。
621 0
|
API PHP 开发者
速卖通商品详情接口(速卖通API系列)
速卖通(AliExpress)是阿里巴巴旗下的跨境电商平台,提供丰富的商品数据。通过速卖通开放平台(AliExpress Open API),开发者可获取商品详情、订单管理等数据。主要功能包括商品搜索、商品详情、订单管理和数据报告。商品详情接口aliexpress.affiliate.productdetail.get用于获取商品标题、价格、图片等详细信息。开发者需注册账号并创建应用以获取App Key和App Secret,使用PHP等语言调用API。该接口支持多种请求参数和返回字段,方便集成到各类电商应用中。
1032 5
|
前端开发
如何在Rollup中配置Tree Shaking?
如何在Rollup中配置Tree Shaking?
450 55
|
机器学习/深度学习 人工智能 算法
深度解析:基于卷积神经网络的宠物识别
宠物识别技术随着饲养规模扩大而兴起,传统手段存在局限性,基于卷积神经网络的宠物识别技术应运而生。快瞳AI通过优化MobileNet-SSD架构、多尺度特征融合及动态网络剪枝等技术,实现高效精准识别。其在智能家居、宠物医疗和防走失领域展现广泛应用前景,为宠物管理带来智能化解决方案,推动行业迈向新高度。
1450 66
|
开发工具 git Docker
|
人工智能 关系型数据库 MySQL
开源PolarDB-X:单节点误删除binlog恢复
本文由邵亚鹏撰写,分享了在使用开源PolarDB-X过程中,因误删binlog导致数据库服务无法启动的问题及恢复过程。作者结合实践经验,详细介绍了在无备份情况下如何通过单节点恢复机制重启数据库,并提出了避免类似问题的几点建议,包括采用高可用部署、定期备份及升级至最新版本等。
|
JavaScript 前端开发 API
在线三维CAD中创建一个三维管道模型(网页浏览编辑三维CAD)
本文介绍了如何使用mxcad3d创建三维管道模型。mxcad3d提供了丰富的API,使复杂的管道结构设计变得直观简便。首先需安装mxcad包并初始化项目。接着,通过编写JavaScript函数实现圆角方管的绘制,并将其添加到web界面中。点击绘制按钮即可生成管道模型并实时展示。这为网页CAD中的三维建模任务提供了强大支持。相关代码与项目可在[mxcad3d官方仓库](https://gitee.com/mxcadadox/mxcad_docs/tree/master/examples3D/Test3dPipe.7z)获取。
626 123
在线三维CAD中创建一个三维管道模型(网页浏览编辑三维CAD)
|
文字识别 算法 小程序
【项目总结】快瞳医疗化验单的OCR识别
快瞳科技通过图像识别技术,成功解决了医疗化验单OCR识别难题。项目要求精准识别表格内容,尤其是化验数值和名称,准确率达85%以上。针对化验单来源多样、干扰因素多的问题,团队采用智能文档抽取模型、opencv技术(如霍夫变换)进行图片扶正与裁剪,优化识别精度。最终,项目不仅达到药企要求,还实现超越,为医疗行业智能化转型提供了高性价比解决方案,助力快瞳科技在医疗信息化领域树立良好口碑。
1221 43
|
运维 数据挖掘 数据处理
Pandas时间数据处理:从基础到进阶的实战指南
Pandas时间数据处理涵盖了从基础到高级的全面功能。其核心由Timestamp、DatetimeIndex、Period和Timedelta四个类构建,支持精准的时间点与区间操作。内容包括时间数据生成(字符串解析与序列生成)、时间索引与切片、高级运算(偏移重采样与窗口计算)、时区处理、周期性数据分析及实战案例(如智能电表数据)。此外,还涉及性能优化技巧和未来展望,帮助用户高效处理时间序列数据并应用于预测分析等场景。
725 1

热门文章

最新文章