学成在线。。。

一:讲师管理

介绍:可以实现对讲师的分页展示,多条件组合分页查询,对讲师的添加,修改,删除操作。

针对于添加来说,使用requestBody注解,搭配postmapping接收数据,使用service层的对象,调用mapper方法,向数据库中保存数据。

修改:

先根据讲师id,查询出讲师,再去修改

创建时间和更新时间在实体类中使用TabledField注解,实现自动填充。

对讲师分页展示;支持多条件组合查询教师;

        分页展示:

     使用mp的分页插件,在接口中,通过路径,接收当前页和每页记录数,接着创建page对象,接收两个参数,一个是当前页码,一个是当前页的记录数。调用方法,把page对象传进去,会将分页所有数据封装到这个page对象当中,通过page对象,返回所有数据的一个list集合。 

        多条件组合带分页的查询:

        用户选择不同的条件,可以查出不同的教师。

首先要把条件值封装到vo当中,把vo再传给接口。(vo中包括讲师名称,级别,开始和结束时间)。

然后会对传来的条件值进行判空,如果不为空,就拼接条件,使用page方法根据条件,查询出符合的数据,最后返回数据。

常用注解:

requestBody:前端用json传递数据,把数据封装到对应的对象当中。

需要搭配psot提交;

还要注意传来的数据是否可以为空,如果可以为空,就要设置required为false

reponseBody:用于返回json数据。

PathVariable:将url中的变量绑定到方法中的参数上。

Value:用来读取配置文件中的数据,保存到变量中。

上传讲师头像:

将id和密钥保存到配置文件当中,使用常量类,读取配置文件中的内容。

在相关接口中,接收文件变量,使用阿里云的相关方法,先创建出一个oss实例

再获取一个文件输入流

调用oss实例中的put方法,实现上传,返回保存的文件路径

文件路径需要手动拼接出来:由桶的名称+站点名称+文件名称

方法的参数有:bucket名称,输入流,文件名

 

 使用datetime获取当前时间,再把当前时间拼接到文件名称里面,这样在进行上传的时候,就可以在阿里云中根据时间,建立相应的文件夹,来对文件进行分类。

问题:

1:如何使用oss服务

在使用oss服务之前,需要在阿里云中创建出bucket,也就相当于一个文件夹,用来存储相关文件

再得到id和密钥,只有有了这个,才有相关权限去操作。

再去Java工程中引入相关依赖,就可以操作相关方法,上传相关文件。

2:多次上传文件,如果文件名相同会被覆盖,如何解决

通过使用uuid的random方法,给文件名称添加唯一的随机值。

二:课程分类管理

课程分类管理是我负责开发的,负责展示相关课程,进行二级分类展示。

树形分类展示:

1:首先需要将数据存入到数据库中

使用的easyexcel,读取数据是从磁盘中一行一行读取,而不是将文件一次性读到内存当中

根据excel的列表头创建对应的实体类

在接口中获取文件输入流

获取到文件之后,调用easyexcel的read方法进行读取,参数有输入流,实体类,监听器对象

接下来需要实现监听器这个类:

它是进行一行一行的读取数据的

监听器这个类,交给不了spring管理,那么在这个监听器中,就注入不了其他对象,所以就将其他对象传给监听器的构造方法,实现将其他对象注入到这个监听器类中。

这个类中有两个方法,一个是invoke方法,用来读取excel数据。

由于有每一行中第一个数据是一级分类,第二个数据是二级分类

所以就先读第一个数据,读取到数据库中,再读第二个数据,读取到数据库中

在进行读取时,要进行判断数据是否重复

是根据名称和parentid值进行判断,一级分类的parentid值都是0,二级分类的parentid值是它对应的一节分类的parentid值

2:存入之后,需要给前端返回数据,构建出前端需要的类型的数据

分析:最外层是一个json类型的数组,数组里面又有多个对象,每个对象中,有一级分类,又有一个数组,数组当中又有多个对象,对象中是二级分类。

其实就是最后返回一个list集合,这个集合里面存储一级分类的对象,在这个对象当中又有一个集合,用来存储二级分类对象。简单就是集合里面存对象,对象里面又存集合,

第一步:根据返回数据,建立对应的实体类

第二步: 在两个实体类之间表示关系&

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

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

相关文章

Webug3.0通关笔记17 中级进阶(第01-05关)

目录 第一关 出来点东西吧 1.打开靶场 2.源码分析 3.源码修正 4.文件包含漏洞渗透 第二关 提交方式是怎样的啊? 1.打开靶场 2.源码分析 3.渗透实战 (1)bp改包法 (2)POST法渗透 第三关 我还是一个注入 1.打开…

C语言复习笔记--内存函数

在复习完字符函数和字符串函数之后,今天让我们复习一下内存函数吧.这一块的东西不太多,并且与之前的字符串函数有一些地方很相似,所以这里应该会比较轻松. memcpy使用和模拟实现 老规矩,先看函数原型 void * memcpy ( void * destination, const void * source, size_t num );…

【Unity AR开发插件】一、高效热更新:Unity AR 插件结合 HybridCLR 与 ARFoundation 的开源仓库分享

摘要 本篇博客详细介绍了我基于 HybridCLR 与 AR Foundation 的 Unity AR 开发插件,旨在为开发者提供高效的跨平台热更新方案。文章从背景与动机出发,覆盖一键安装工具、环境配置、热更新数据制作与示例程序运行等核心模块,并展示代码结构与使…

数据分析(四):Python Pandas数据输入输出全流程指南

Python Pandas数据输入输出全流程指南 1. 引言 数据输入输出(I/O)是数据分析工作流中最基础也是最重要的环节之一。Pandas提供了丰富的数据读写接口,支持从各种文件格式和数据库中加载数据,以及将处理后的数据保存到不同存储系统中。本文将全面介绍Pan…

人工智能与机器学习:Python从零实现性回归模型

🧠 向所有学习者致敬! “学习不是装满一桶水,而是点燃一把火。” —— 叶芝 我的博客主页: https://lizheng.blog.csdn.net 🌐 欢迎点击加入AI人工智能社区! 🚀 让我们一起努力,共创AI未来! 🚀 前言 在 AI 的热潮中,很容易忽视那些让它得以实现的基础数学和技…

Ubuntu18.04更改时区(图文详解)

Ubuntu18.04更改时区 1、前言2、更改时区3、总结 1、前言 记录一下Ubuntu18.04更改时区的过程,方便自己日后回顾,也可以给有需要的人提供帮助。 2、更改时区 输入下面的指令,进行时区选择 tzselect输入4选择亚洲,输入9选择中…

vue2 项目使用vite2 升级 vite4 后,对别名的解析有问题,导致打包后项目无法正常运行

问题描述: 之前使用的 vite2 版本,需要在 vite.config 里配置 vue 别名,不然会有commonjs 的依赖包找不到 vue,因为 vite 默认使用 esm 版本。 vue: vue/dist/vue.common.prod.js 在 vite2 中可以正常进行打包上线,…

民办生从零学C的第十二天:指针(1)

每日励志:拼搏十年,征战沙场,不忘初心,努力成为一个浑身充满铜臭味的有钱人。 一.内存和地址 1.内存 计算机内存是一系列存储单元的集合,每个存储单元都有唯一的地址来标识。这些存储单元用于存储程序的数据和指令。…

用Postman验证IAM Token的实际操作

当我们需要用Postman发送一个最简单的请求去验证Token的时候我们该怎么办? 【一、步骤】 步骤1:打开Postman,新建一个GET请求 请求地址填: https://iam.cn-north-4.myhuaweicloud.com/v3/auth/projects 解释一下:…

关于常量指针和指向常量的指针

关于指针,对于常量指针和指向常量的指针也是傻傻分不清。看到定义时,不知道是指针不能变,还是指针指向的内容不能变量。 先看形式: const char * A; char * const B; 这两种有什么区别?傻傻分不清。 A这种定义&am…

unity 读取csv

1.读取代码 string filePath Application.streamingAssetsPath "\\data.csv"; public List<MovieData> movieData new List<MovieData>(); private void ReadCSV(string filePath) { List<List<string>> data new List<…

安达发|高效智能塑料切割数控系统 - 全自动化软件解决方案

在当今的制造业中&#xff0c;塑料作为一种轻便、耐用且成本效益高的材料&#xff0c;被广泛应用于各个领域。随着科技的进步和市场需求的变化&#xff0c;塑料加工行业正面临着前所未有的挑战和机遇。为了提高生产效率&#xff0c;降低成本&#xff0c;并满足日益严格的质量标…

c#接口_抽象类_多态学习

c#接口_抽象类_多态学习 学习日志 关于&#xff1a;c#接口_抽象类_多态的学习记录。 一、概念 1. 多态&#xff08;Polymorphism&#xff09; 定义&#xff1a;同一操作作用于不同对象时&#xff0c;表现出不同的行为。实现方式&#xff1a; 继承 方法重写&#xff08;ov…

智能硬件行业售后服务管理:提升客户体验的关键所在

在当今数字化浪潮的推动下&#xff0c;智能硬件行业正以前所未有的速度蓬勃发展。从智能家居设备的普及&#xff0c;到智能穿戴产品的多样化&#xff0c;再到智能办公设备的广泛应用&#xff0c;智能硬件已经深入到我们生活的方方面面。据市场研究机构预测&#xff0c;未来几年…

Vue3 里 CSS 深度作用选择器 :deep()

&#x1f3af; 解释 在 Vue 组件里&#xff0c;CSS 默认是 scoped&#xff08;作用域限定的&#xff09;&#xff0c;只对当前组件生效。 如果你想在 scoped 样式里&#xff0c;穿透到子组件的内部元素&#xff0c;就要用 :deep()。 ✏️ 示例 比如&#xff0c;你有一个子组件…

仙宫云ComfyUI —【Wan2.1】AI视频生成部署

【Wan2.1】AI视频生成本地部署与使用技巧全面详解_哔哩哔哩_bilibili 所有模型下载&#xff1a;https://pan.quark.cn/s/9d793aa1b258 Runninghub本期课程工作流下载&#xff08;可获得1000RH币&#xff09;&#xff1a;https://www.runninghub.cn/?utm_sourcekol01-RH145 仙…

LabVIEW 在测控领域的深度开发与未来发展趋势研究报告 (2025-2030)(原创作品使用请注明出处,三连)

## LabVIEW 在测控领域的深度开发与未来发展趋势研究报告 (2025-2030) ### 引言 LabVIEW(Laboratory Virtual Instrument Engineering Workbench)自 1986 年由美国国家仪器公司(NI)发布以来,凭借其独特的图形化编程语言(G 语言)和强大的硬件集成能力,已成为全球工程师和…

政策支持与市场驱动:充电桩可持续发展的双轮引擎

随着全球能源转型加速&#xff0c;新能源汽车成为实现低碳交通的重要方向。然而&#xff0c;充电基础设施不足仍是制约其普及的关键瓶颈。当前&#xff0c;国际主流的充电桩运营模式包括政府推动、电网企业推动及汽车厂商推动三种模式&#xff0c;但单一模式均存在显著局限性。…

JVM——垃圾收集策略

GC的基本问题 什么是GC&#xff1f; GC 是 garbage collection 的缩写&#xff0c;意思是垃圾回收——把内存&#xff08;特别是堆内存&#xff09;中不再使用的空间释放掉&#xff1b;清理不再使用的对象。 为什么要GC&#xff1f; 堆内存是各个线程共享的空间&#xff0c…

用Java模拟打字:深入解析 java.awt.Robot 的键盘控制艺术

作为开发者&#xff0c;我们有时会遇到需要自动化用户界面交互的场景&#xff0c;比如自动化测试、脚本编写、或者制作一些辅助工具。而模拟键盘输入&#xff0c;尤其是“打字”&#xff0c;是这类自动化任务中非常基础且常见的一环。 在 Java 中&#xff0c;实现这一目标的利…