一、讲师查询功能
1、编写查询 controller 代码内容
@RestController @RequestMapping("/eduservice/teacher") public class EduTeacherController { @Autowired private EduTeacherService eduTeacherService; // 查询讲师列表所有数据 // 使用restful风格 @GetMapping("findAll") public List<EduTeacher> findAll(){ List<EduTeacher> list = eduTeacherService.list(null); return list; } }
2、创建配置类,配置mapper扫描和其他
@Configuration @MapperScan("com.kuang.eduservice.mapper") public class EduConfig { }
3、配置SQL执行性能分析插件
/** * SQL 执行性能分析插件 * 开发环境使用,线上不推荐。 maxTime 指的是 sql 最大执行时长 */ @Bean @Profile({"dev","test"})// 设置 dev test 环境开启 public PerformanceInterceptor performanceInterceptor() { PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor(); performanceInterceptor.setMaxTime(1000);//ms,超过此处设置的ms则sql不执行 performanceInterceptor.setFormat(true); return performanceInterceptor; }
4、创建主启动类
@SpringBootApplication public class EduApplication { public static void main(String[] args) { SpringApplication.run(EduApplication.class, args); } }
5、测试启动
访问:http://localhost:8001/eduservice/teacher/findAll
6.统一返回的json时间格式
默认情况下json时间格式带有时区,并且是世界标准时间,和我们的时间差八个小时
在application.yml中设置:
spring: jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8
二、讲师逻辑删除功能
1、配置逻辑删除插件
//逻辑删除组件 @Bean public ISqlInjector sqlInjector(){ return new LogicSqlInjector(); }
2、逻辑删除属性上面添加注解
@TableLogic private Boolean isDeleted;
3、编写Controller删除方法
//逻辑删除讲师方法 @DeleteMapping("removeById/{id}") public boolean removeById(@PathVariable String id){ boolean flag = eduTeacherService.removeById(id); return flag; }
4、如何测试
借助一些工具进行测试
- swagger测试(重点):生成在线的接口文档,方便接口测试。
- postman(了解)
三、配置Swagger2
1、创建common模块—在guli_parent下创建common
2、引入相关依赖
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <scope>provided </scope> </dependency> <!--mybatis-plus--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <scope>provided </scope> </dependency> <!--lombok用来简化实体类:需要安装lombok插件--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <scope>provided </scope> </dependency> <!--swagger--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <scope>provided </scope> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <scope>provided </scope> </dependency> <!-- redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!-- spring2.X集成redis所需common-pool2 <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>2.6.0</version> </dependency>--> </dependencies>
3、创建swagger的配置类
在common下面创建子模块service_base
, 并在该模块创建swagger的配置类
@Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket webApiConfig(){ return new Docket(DocumentationType.SWAGGER_2) .groupName("webApi") .apiInfo(webApiInfo()) .select() .paths(Predicates.not(PathSelectors.regex("/admin/.*"))) .paths(Predicates.not(PathSelectors.regex("/error.*"))) .build(); } private ApiInfo webApiInfo(){ return new ApiInfoBuilder() .title("网站-课程中心API文档") .description("本文档描述了课程中心微服务接口定义") .version("1.0") .contact(new Contact("lxy", "www.baidu.com", "2422737092@qq.com")) .build(); } }
4、Swagger2具体使用
在service_edu引入service_base依赖
最后在service_edu启动类上添加注解,设置包扫描规则
访问测试: http://localhost:8001/swagger-ui.html
5.定义接口说明和参数说明
定义在类上:@Api
定义在方法上:@ApiOperation
定义在参数上:@ApiParam
@Api(description = "讲师管理") @RestController @RequestMapping("/eduservice/teacher") public class EduTeacherController { @Autowired private EduTeacherService eduTeacherService; // 查询讲师列表所有数据 // 使用restful风格 @ApiOperation(value = "所有讲师列表") @GetMapping("findAll") public List<EduTeacher> findAll(){ List<EduTeacher> list = eduTeacherService.list(null); return list; } //逻辑删除讲师方法 @ApiOperation(value = "逻辑删除讲师") @DeleteMapping("{id}") public boolean removeById( @ApiParam(name = "id", value = "讲师ID",required = true) @PathVariable String id){ boolean flag = eduTeacherService.removeById(id); return flag; } }