onLineStudySys项目开发过程

创建父工程maven工程

删除src等多余目录

更改仓库位置

 

 

 

 修改pom文件  标识父工程

1 <packaging>pom</packaging>

目录结构

 

 父工程依赖

导入数据库

 

 

 创建application.yml配置文件

 

 

 创建启动类

1 @SpringBootApplication
2 public class EduApplication {
3 
4     public static void main(String[] args) {
5         SpringApplication.run(EduApplication.class, args);
6     }
7 }

整合MP代码生成器

 

 

 

 

 创建配置类

1 @Configuration
2 @EnableTransactionManagement
3 @MapperScan("com.atguigu.eduservice.mapper")
4 public class MyBatisPlusConfig {
5 }

编写测试

 

 修改时间显示格式

1 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
2 spring.jackson.time-zone=GMT+8

 封装swagger2

 swaggerConfig.class

 1 @Configuration
 2 @EnableSwagger2
 3 public class SwaggerConfig {
 4     @Bean
 5     public Docket webApiConfig(){
 6 
 7         return new Docket(DocumentationType.SWAGGER_2)
 8                 .groupName("webApi")
 9                 .apiInfo(webApiInfo())
10                 .select()
11                 .paths(Predicates.not(PathSelectors.regex("/admin/.*")))  //不暴露超级用户接口信息
12                 .paths(Predicates.not(PathSelectors.regex("/error.*")))
13                 .build();
14 
15     }
16 
17     private ApiInfo webApiInfo(){
18 
19         return new ApiInfoBuilder()
20                 .title("网站-课程中心API文档")
21                 .description("本文档描述了课程中心微服务接口定义")
22                 .version("1.0")
23                 .contact(new Contact("Hello", "http://xxx.com", "12345678@qq.com"))
24                 .build();
25     }
26 
27 
28 }

在service模块下引入依赖

1 <dependency>
2             <groupId>org.husong</groupId>
3             <artifactId>service_base</artifactId>
4             <version>V-1.0</version>
5         </dependency>

添加注解扫描包

测试一下

 

 

http://localhost:8001/swagger-ui.html

分页获取

 

 

 1 @ApiOperation(value = "分页获取讲师列表")
 2     @PostMapping("getTeacherPage/{current}/{limit}")
 3     public R getTeacherPage(@PathVariable Long current,
 4                             @PathVariable Long limit,
 5                             @RequestBody TeacherQuery teacherQuery){
 6         String name = teacherQuery.getName();
 7         Integer level = teacherQuery.getLevel();
 8         String begin = teacherQuery.getBegin();
 9         String end = teacherQuery.getEnd();
10         QueryWrapper<EduTeacher> wrapper = new QueryWrapper<>();
11         if(!StringUtils.isEmpty(name)){
12             wrapper.like("name",name); //第一个name是数据库字段名
13         }
14         if(!StringUtils.isEmpty(level)){
15             wrapper.eq("level",level); //第一个level是数据库字段名
16         }
17         if(!StringUtils.isEmpty(begin)){
18             wrapper.ge("gmt_create",begin); //第一个gmt_create是数据库字段名
19         }
20         if(!StringUtils.isEmpty(end)){
21             wrapper.le("gmt_create",end); //第一个gmt_create是数据库字段名
22         }
23         Page<EduTeacher> page = new Page<>(current,limit);
24         eduTeacherService.page(page,wrapper);
25         List<EduTeacher> list = page.getRecords();
26         long total = page.getTotal();
27         Map<String,Object> map = new HashMap<>();
28         map.put("list",list);
29         map.put("total",total);
30         return R.ok().data(map);
31     }

结果封装

 

 

 1 @Data
 2 public class R {
 3     @ApiModelProperty(value = "是否成功")
 4     private Boolean success;
 5 
 6     @ApiModelProperty(value = "返回码")
 7     private Integer code;
 8 
 9     @ApiModelProperty(value = "返回消息")
10     private String message;
11 
12     @ApiModelProperty(value = "返回数据")
13     private Map<String, Object> data = new HashMap<String, Object>();
14 
15     private R(){}
16 
17     public static R ok(){
18         R r = new R();
19         r.setSuccess(true);
20         r.setCode(ResultCode.SUCCESS);
21         r.setMessage("成功");
22         return r;
23     }
24 
25     public static R error(){
26         R r = new R();
27         r.setSuccess(false);
28         r.setCode(ResultCode.ERROR);
29         r.setMessage("失败");
30         return r;
31     }
32 
33     public R success(Boolean success){
34         this.setSuccess(success);
35         return this;
36     }
37 
38     public R message(String message){
39         this.setMessage(message);
40         return this;
41     }
42 
43     public R code(Integer code){
44         this.setCode(code);
45         return this;
46     }
47 
48     public R data(String key, Object value){
49         this.data.put(key, value);
50         return this;
51     }
52 
53     public R data(Map<String, Object> map){
54         this.setData(map);
55         return this;
56     }
57 
58 }

 

 统一异常处理

 

 

1 @Data
2 @AllArgsConstructor
3 @NoArgsConstructor
4 public class MyException extends RuntimeException{
5     @ApiModelProperty("状态码")
6     private Integer code;
7     private String msg;
8 }
 1 @ControllerAdvice    //aop编程,不改变原有功能和代码,实现添加额外功能
 2 public class GlobalExceptionHandler {
 3     @ExceptionHandler(Exception.class)
 4     @ResponseBody
 5     public R error(Exception e){
 6         e.printStackTrace();
 7         return R.error();
 8     }
 9 
10     @ExceptionHandler(MyException.class)
11     @ResponseBody
12     public R error(MyException e){
13         e.printStackTrace();
14         return R.error().message(e.getMsg()).code(e.getCode());
15     }
16 }

 

 

 

posted @ 2021-12-10 15:56  Hu_note  阅读(49)  评论(0)    收藏  举报