学成在线--18.新增课程(课程分类查询)

文章目录

  • 一.需求分析
  • 二.课程分类查询介绍
  • 三.数据结构
  • 四.数据格式
  • 五.数据模型
  • 六.Api接口
  • 七.服务器端
    • 1.Dao
      • 1)定义mapper
      • 2)定义mapper映射文件
    • 2.Service
    • 3.Controller
  • 八.接口测试

一.需求分析

用户操作流程如下:
1、用户进入“我的课程”页面,点击“新增课程”,进入新增课程页面;
2、填写课程信息,选择课程分类、课程等级、学习模式等。
3、信息填写完毕,点击“提交”,课程添加成功或课程添加失败并提示失败原因。

在这里插入图片描述

需要解决的是在新增页面上输入的信息:
1、课程分类
多级分类,需要方便用户去选择。
2、课程等级、学习模式等这些选项建议是可以配置的

二.课程分类查询介绍

在新增课程界面需要选择课程所属分类, 分类信息是整个项目非常重要的信息,课程即商品,分类信息设置的好坏直接影响用户访问量。
分类信息在哪里应用?
1、首页分类导航
在这里插入图片描述
2、课程的归属地
添加课程时要选择课程的所属分类。

三.数据结构

分类表category的结构如下:
在这里插入图片描述

四.数据格式

在添加课程时需要选择课程所属的分类,因此需要定义课程分类查询接口。
接口格式要根据前端需要的数据格式来定义,前端展示课程分类使用elemenet-ui的cascader(级联选择器)组件。
在这里插入图片描述
数据格式例子如下:

[{value: 'zhinan',label: '指南',children: [{value: 'shejiyuanze',label: '设计原则',children: [{value: 'yizhi',label: '一致'}, {value: 'fankui',label: '反馈'}, {value: 'xiaolv',label: '效率'}, {value: 'kekong',label: '可控'}]}]}
]

五.数据模型

定义category的模型
文件位置:xcEduService01\xc-framework-model\src\main\java\com\xuecheng\framework\domain\course\Category.java

@Data
@ToString
@Entity
@Table(name="category")
@GenericGenerator(name = "jpa‐assigned", strategy = "assigned")
public class Category implements Serializable {private static final long serialVersionUID =906357110051689484L;@Id@GeneratedValue(generator = "jpa‐assigned")@Column(length = 32)private String id;private String name;private String label;private String parentid;private String isshow;private Integer orderby;private String isleaf;
}

定义数据返回格式:
文件位置:xcEduService01\xc-framework-model\src\main\java\com\xuecheng\framework\domain\course\ext\CategoryNode.java

@Data
@ToString
public class CategoryNode extends Category {List<CategoryNode> children;
}

六.Api接口

文件位置:C:\Users\fxd\Desktop\java\21微服务教育网学成在线\07-课程管理实战\代码\xcEduService01\xc-service-api\src\main\java\com\xuecheng\api\course\CategoryControllerApi.java

package com.xuecheng.api.web.controller.api.course;
import com.xuecheng.framework.domain.course.ext.CategoryNode;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Api(value = "课程分类管理",description = "课程分类管理",tags = {"课程分类管理"})
public interface CategoryControllerApi {@ApiOperation("查询分类")public CategoryNode findList();
}

七.服务器端

1.Dao

1)定义mapper

文件位置:xcEduService01\xc-service-manage-course\src\main\java\com\xuecheng\manage_course\dao\CategoryMapper.java

@Mapper
public interface CategoryMapper {//查询分类public CategoryNode selectList();
}

2)定义mapper映射文件

采用表的自连接方式输出树型结果集。
文件位置:xcEduService01\xc-service-manage-course\src\main\resources\com\xuecheng\manage_course\dao\CategoryMapper.xml

<?xml version="1.0" encoding="UTF‐8" ?>
<!DOCTYPE mapper PUBLIC "‐//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis‐3‐
mapper.dtd" >
<mapper namespace="com.xuecheng.manage_course.dao.CategoryMapper" ><resultMap type="com.xuecheng.framework.domain.course.ext.CategoryNode" id="categoryMap" ><id property="id" column="one_id"/><result property="name" column="one_name"/><result property="label" column="one_label"/><result property="isshow" column="one_isshow"/><result property="isleaf" column="one_isleaf"/><result property="orderby" column="one_orderby"/><result property="parentid" column="one_parentid"/><collection property="children" ofType="com.xuecheng.framework.domain.course.ext.CategoryNode"><id property="id" column="two_id"/><result property="name" column="two_name"/><result property="label" column="two_label"/><result property="isshow" column="two_isshow"/><result property="isleaf" column="two_isleaf"/><result property="orderby" column="two_orderby"/><result property="parentid" column="two_parentid"/><collection property="children" ofType="com.xuecheng.framework.domain.course.ext.CategoryNode"><id property="id" column="three_id"/><result property="name" column="three_name"/><result property="label" column="three_label"/><result property="isshow" column="three_isshow"/><result property="isleaf" column="three_isleaf"/><result property="orderby" column="three_orderby"/><result property="parentid" column="three_parentid"/></collection></collection></resultMap><select id="selectList" resultMap="categoryMap" >SELECTa.id one_id,a.name one_name,a.label one_label,a.isshow one_isshow,a.isleaf one_isleaf,a.orderby one_orderby,a.parentid one_parentid,b.id two_id,b.name two_name,b.label two_label,b.isshow two_isshow,b.isleaf two_isleaf,b.orderby two_orderby,b.parentid two_parentid,c.id three_id,c.name three_name,c.label three_label,c.isshow three_isshow,c.isleaf three_isleaf,c.orderby three_orderby,c.parentid three_parentidFROMcategory a LEFT JOIN category bON a.id = b.parentidLEFT JOIN category cON b.id = c.parentidWHERE a.parentid = '0'ORDER BY a.orderby,b.orderby,c.orderby</select>
</mapper>

2.Service

文件位置:xcEduService01\xc-service-manage-course\src\main\java\com\xuecheng\manage_course\service\CategoryService.java

@Service
public class CategoryService {@AutowiredCategoryMapper categoryMapper;//查询分类public CategoryNode findList(){return categoryMapper.selectList();}
}

3.Controller

文件位置:xcEduService01\xc-service-manage-course\src\main\java\com\xuecheng\manage_course\controller\CategoryController.java

@RestController
@RequestMapping("/category")
public class CategoryController implements CategoryControllerApi {@AutowiredCategoryService categoryService;@Override@GetMapping("/list")public CategoryNode findList() {return categoryService.findList();}
}

八.接口测试

接口描述如下:
在这里插入图片描述

使用swagger-ui或postman测试接口
在这里插入图片描述

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

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

相关文章

给程序员们的工资报价提醒

在薪水上讨价还价的方式有很多种&#xff0c;我要说的这一点也许并不是最好的。然而&#xff0c;如果使用的得当&#xff0c;会收到很好的效果。如果你正在跟一家公司接触(没有经过职业中介)&#xff0c;而且事情看来很顺利&#xff0c;进度很快&#xff0c;你要保持这种面试的…

POI 方式-excle 表格导出实现-java-poi

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 效果&#xff1a; jsp 页面 用的Bootstrap &#xff1a; <li class"dropdown"> <a href"javascript:void(0)…

02-css的选择器

css的选择器&#xff1a;1.基本选择器 2.高级选择器 基本选择器包含&#xff1a; 1.标签选择器标签选择器可以选中所有的标签元素&#xff0c;比如div&#xff0c;ul&#xff0c;li &#xff0c;p等等&#xff0c;不管标签藏的多深&#xff0c;都能选中&#xff0c;选中的是所有…

iphoneX样式兼容

// 1.viewport meta 标签增加属性viewport-fitcover // 2.body元素增加样式 body { padding-bottom: constant(safe-area-inset-bottom); padding-bottom: env(safe-area-inset-bottom); } // 3.如有fixed底部的元素&#xff0c;也增加上面样式 xxx { padding-bottom: constant…

学成在线--19.新增课程(数据字典)

文章目录一.介绍二.数据模型三.数据模型类四.字典查询API接口五.服务器端1.Dao2.Service3.Controller一.介绍 在新增课程界面需要选择课程等级、课程状态等&#xff0c;这些信息统一采用数据字典管理的方式。 本项目对一些业务的分类配置信息&#xff0c;比如&#xff1a;课程…

范式简介

范式是符合某一种级别的关系模式的集合。关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式。范式的种类&#xff1a; 第一范式(1NF) 第二范式(2NF) 第三范式(3NF) BC范式(BCNF) 第四范式(4NF) 第五范式(5NF) 一个低一级范式的关系模式&#xff0c;通过模…

程序员的进化

对于很多同学来说&#xff0c;他们对程序员的职业生涯非常关注。而这本质上是一个进化的过程。我们将如何进化&#xff1f;在每个进化阶段我们应该如何提高自己&#xff1f;下面的文章根据我自己的切身经历和阅读过的书&#xff0c;为程序员每个阶段的进化提供了不同的学习思路…

【树形dp】vijos1144小胖守皇宫

细节很精妙 描述 huyichen世子事件后&#xff0c;xuzhenyi成了皇上特聘的御前一品侍卫。 皇宫以午门为起点&#xff0c;直到后宫嫔妃们的寝宫&#xff0c;呈一棵树的形状&#xff1b;某些宫殿间可以互相望见。大内保卫森严&#xff0c;三步一岗&#xff0c;五步一哨&#xff0c…

手机号码归属地及运营商查询

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL;public class NewMobile {public stati…

redhat6.5手动配置网络

2、手动设置ip地址如果虚拟机不能自动获取IP&#xff0c;只能手动配置&#xff0c;配置方法如下&#xff1a;输入命令#vi /etc/sysconfig/network-scripts/ifcfg-eth0 [编辑网卡的配置文件]输入上述命令后回车&#xff0c;打开配置文件&#xff0c;使用方向键移动光标到最后一行…

学成在线--20.新增课程(最后完善)

文章目录一.效果展示二.服务端1.Api接口2.Dao3.Service4.Controller三.前端1.页面完善1&#xff09;创建course_add.vue页面2&#xff09;course_add.vue页面路由3&#xff09;course_list.vue中添加链接2.查询数据字典1&#xff09;视图中代码2&#xff09;定义Api方法3&#…

http协议工作流程

用户单机鼠标后所发生的事件过程如下&#xff1a; &#xff08;1&#xff09;浏览器分析链接所指向页面的URL。 &#xff08;2&#xff09;浏览器向DNS服务器请求解析URL的IP地址。 &#xff08;3&#xff09;域名系统DNS解析出URL对应的IP地址。 &#xff08;4&#xff09…

html里面表格问题

表格问题汇总&#xff1a; 现代网站中表格的用武之地已经很少了&#xff0c;但是一些框架&#xff0c;如bootstorp还是会用到的&#xff0c;所以还是需要了解掌握。本随笔只涉及开发过程中遇到的表格问题&#xff0c;不做其他拓展。 1、caption代表的是表格元素的标题。至于标题…

利用Underscore求数组的交集、并集和差集

1 数组交集函数——intersection 数组的交集是指包含多个数组中的共同元素的一个数组&#xff0c;求数组的交集就是找出给定数组中的共有元素。 下面实现一个求两个数组交集的函数。 判断数组是够包含指定值&#xff0c;使用Array.indexOf就可以。所以我们可以遍历第一个参数数…

RT-Thread简介

RT-Thread简介 RT-Thread是一款完全由国内团队开发维护的嵌入式实时操作系统&#xff08;RTOS&#xff09;&#xff0c;具有完全的自主知识产权。 经过16个年头的沉淀&#xff0c;伴随着物联网的兴起&#xff0c;它正演变成一个功能强大、组件丰富的物联网操作系统。 RT-Thre…

调用第三方API ,实现手机号码归属地及运营商查询

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 运行结果&#xff1a; 中国电信 西双版纳 西双版纳,中国电信 代码&#xff1a; import java.io.BufferedReader; import java.io.I…

学成在线--21.课程信息修改

文章目录一.需求分析二.课程管理导航页面1.定义course_manage.vue为课程管理页面2.创建各个信息管理页面3.创建路由三.服务端1.Api接口1&#xff09;根据课程ID查询课程信息2&#xff09;修改课程信息2.Dao3.Service4.Controller四.前端1. 完成course_baseinfo.vue页面2.API方法…

HTTP协议特点

&#xff08;一&#xff09;HTTP协议是无状态的。也就是说&#xff0c;同一个客户第二次访问同一个服务器上的页面时&#xff0c;服务器的响应与第一次被访问时相同。服务器不记得访问过得这个用户&#xff0c;也不记得为这个客户服务过多少次。 &#xff08;二&#xff09;HT…

C#曲线分析平台的制作(四,highcharts+ajax加载后台数据)

在上一篇博客&#xff1a;C#曲线分析平台的制作&#xff08;三&#xff0c;三层构架echarts显示&#xff09;中已经完成了后台的三层构架的简单搭建&#xff0c;为实现后面的拓展应用开发和review 改写提供了方便。而在曲线分析平台中&#xff0c;往往有要求时间轴联动功能&…

国际C语言混乱代码大赛结果公布

国际C语言混乱代码大赛&#xff08;IOCCC, The International Obfuscated C Code Contest&#xff09;是一项国际编程赛事&#xff0c;从1984年开始&#xff0c;每年举办一次&#xff08;1997年、1999年、2002年、2003年和2006年例外&#xff09;。目的是写出最有创意的最让人难…