讲师管理模块流程

前端

当后端接口写完之后,前端通过ajax调用后端编写好的接口
当前项目使用的是B2C模式,包含两个部分,一个管理员,一个普通用户,对应管理员部分,包含后端接口和前端页面,采用前后端分离开发的方式
在这里插入图片描述

前端部分没有写,重点写后端接口部分
第一个模块是编写讲师管理的增删改查的后端接口部门

讲师管理模块的总结

第一步:创建父工程

父工程的操作:
第一:父工程的pom文件
由于当前是父工程,其下面包含多个子模块,因此当前工程为pom类型
1、父工程中的pom文件主要实现依赖的管理和存放一些公共依赖;
2、父工程下创建一个子模块,在子模块下创建子模块编写讲师管理模块的所有接口操作
3、在父工程下的子模块service模块中的pom文件中配置当前讲师管理模块的用到的所有依赖
4、在service模块写创建子模块service_edu,实现讲师管理模块的接口操作
5、在service_edu模块下,即讲师管理模块中的resource文件下编写讲师管理模块的配置文件application.properties,配置文件中包含数据库配置、服务器端口、开发环境、json数据格式中时间格式的配置,以及mybatis_plus日志的配置(这部分作用在程序启动后,在控制可以看到底层的sql语句,但是当使用logback日志工具之后,这部分不能放在配置文件中,要去掉)
6、开发讲师管理模块,修改mybatis_plus提供的代码生成器模板,生成讲师管理模块的接口部分;(主要有controller、entity、mapper、service)
其中代码生成器中包含五个配置:
(1)全局配置:主要有
代码生成后的输出路径,这里建议使用绝对路径,放在讲师管理模块的main下面
代码生成后是否代开资源管理器以及重新生成代码后是否覆盖
(2)主键策略:
主键策略有四种:自增张,UUID,redis、mp提供
这里使用mp提供的策略,有ID_WORK ID_WORK_STR
这里注意实体类中的主键加注解@TableID
(3)数据库配置:数据 库驱动,路径、用户名、密码、
(4)包配置:包民、模块名、
(5)策略配置,注意:这里主要是根据数据库中的表,生成相应的实体,即将数据库中的子段转化为实体类的属性
7、注意controller中加上注解@restcontroller,将json格式的数据返回给前端
8、定义统一返回数据类型为json格式:这里是的所有接口返回的数据格式都一样,即为json格式,返回给前端,采用对象+数组的方式:主要包含是否相应成功,响应码,返回消息,返回数据,返回数据一般使用map
因为json格式对所有模块都要使用,因此在父工程下创建一个公共模块common在common模块先创建一个模块,编写统一返回数据类型类,同时在该文件夹下创建一个借口,存放状态码,对应json数据格式中的响应码
定义统一结果返回类,有四个属性:是否相应成功、响应码、返回消息、返回数据。将构造器私有,提供两个静态方法,一个成功方法,一个失败方法,以供其他对象调用,这里设置每个属性时都返货一个当前对象this,以实现链式编程,
9、利用swagger生成在线接口文档以测试编写接口方法,即测试讲师管理模块的crud。
这里讲师管理模块的crud方法采用rest风格,即资源以某种表现形式进行状态转移,资源:数据;表现形式:数据格式json,xml等,状态转移:get、delete,post,put等
rest风格本质:在url中通过名词指定资源,在HTTP中通过动词get、post等实现操作管理
注意:因为swagger所有模块都会用到,所用放在公共模块中,在common中创建子模块service_base,在其中创建swagger配置类,配置类中添加注解@configuration和@enableswagger2,表示做的是swagger整合
这里注意,由于swagger配置类和讲师管理模块不在同一个模块,因此需要在讲师管理模块的父模块service的pom文件中添加swagger所在模块的相关依赖
同时在启动类中添加数注解,扫描swagger配置,利用@componentscan(swagger所在的包)
访问swagger的地址:http://localhost:8001//swagger-ui.html
这里对于每一个接口方法,可以通过@ApiOperation(“中文命名”),是的API文档更加清晰
Api可以注解类:@Api(description=“中文名”)
Api注解方法:@ApiOperation(value=“”)
Api注解参数:@ApiParam(name = ,value = required=)

10、编写讲师管理模块crud方法:
在controller中,通过@AutoWired注解注入service接口,实现增删改查操作
注意:在mybatis_plus中对mapper和service都做了封装
例如serviceImpl也是mybatis_plus中的方法
在service调用mapper过程也做了封装,在serviceImpl中注入了baseMapepr,通过@Autowired注解
mybatis_plus对mapper和service都做了封装,同时在serviceImpl类中通过注解注入了mapper
这里serviceImpl类中通过@Autowired注解注入了BasedMapper,
因此在controller中注入service就行,而service注入mapper已经做了
(1)查询所有讲师
请求mapper,请求方式为get,查询所有讲师
(2)逻辑删除讲师
在讲师管理模块中添加逻辑删除插件,同时将对应属性注解为逻辑@TableLogic
使用delete提交
删除讲师是通过讲师id进行删除,因此这里添加通过路劲进行传递id,利用@PathVariable 获取路径中值
(3)讲师分页查询
需要一个分页查询插件,放在当前模块的配置类
继续通过路径传递当前页,以及每页的记录数量
(4)多条件组合查询
这里传入条件为对象,通过
@RequstBody(required= false) 使用json传递数据,将json数据封装给对应的对象,false表示条件可以没有,当使用requestBody是,提交方式为post提交,同样还是通过路劲传递值
(5)添加讲师:同理
(6)修改讲师同理

11、统一异常处理
(1)全局异常处理:因为所有的模块都会涉及到异常处理,因此将异常处理放在公共模块中,即service_base;
在service_base中创建异常处理类,加注解@ControllerAdvice
该注解表示全局异常处理,全局数据绑定、全局数据预处理
定义给一个方法,传入异常,返回json数据格式,通知打印该异常,这里通过注解@ExceptionHandler(Exception.class)表名异常类型,这里是所有异常,特定异常是 异常类型.class,通过加@reponseBody 注解,返回数据,这里要注意,统一结果返回类和统一异常处理在两个不同模块中,因此引入依赖,在service_base的pom文件中引入service_utils依赖,统一依赖具有传递性,对于这个两个依赖,只需要引入一个依赖即可
(2)对于自定子异常处理,需要手动捕获异常,
对于自定义异常处理,创建一个自定义异常处理类,注入lombok插件,@AllArgsConstructor
生成有参数构造器
@NoArgsConstructor生成无参构造器

12、统一日志处理
注意使用logback日志工具,其讲师管理模块中的resource中,和配置文件同级,同时将配置文件中日志等级,还有mybatis_plus的日志都要去掉,命名为logback-spring.xml(固定)日志处理模板一般固定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值