4. 讲师接口管理开发

本文详细介绍了讲师管理模块的配置和代码生成,包括在service-edu模块下创建配置文件,使用MP代码生成器,编写后台管理api接口,实现逻辑删除功能,配置跨域以及Swagger2来生成API接口文档。此外,还涵盖了统一返回结果对象的创建,分页和条件查询接口的开发,以及新增和修改讲师接口的实现。
摘要由CSDN通过智能技术生成

目录

一、讲师管理模块配置和生成代码

1.1 讲师管理模块配置

1.1.1 在service下面service-edu模块中创建配置文件

1.1.2 创建MP代码生成器

1.2 编写后台管理api接口

1.2.1 编写controller代码

1.2.2 创建SpringBoot配置类

1.2.3 配置SQL执行性能分析插件

1.2.4 创建SpringBoot启动类

1.2.5 运行启动类

1.2.6 统一返回的json时间格式

1.3 讲师逻辑删除功能

1.3.1 EduTeacherController添加删除方法

1.3.2 配置逻辑删除插件

1.3.3 使用postman测试删除

1.4 跨域配置

1.4.1 什么是跨域

1.4.2 配置

二、配置Swagger2生成API接口文档

2.1 Swagger2介绍

2.2 配置Swagger2

2.2.1 创建common模块在guli-parent下创建模块common

2.2.2 在common中引入相关依赖 

2.2.3 在common下面创建子模块service-base

2.2.4 在模块service-base中,创建swagger的配置类

2.2.5 在模块service模块中引入service-base

2.2.6 在service-edu启动类上添加注解,进行测试

2.3 API模型

2.4 定义接口说明和参数说明

三、统一返回结果对象

3.1 统一返回数据格式

3.2 创建统一结果返回类

3.2.1 在common模块下创建子模块common-utils

3.2.2 创建接口定义返回码

3.2.3 创建结果类

3.3 统一返回结果使用

3.3.1 在service模块中添加依赖

3.3.2 修改Controller中的返回结果

四、分页和条件查询接口开发

4.1 分页

4.1.1 MyBatisPlusConfig中配置分页插件

4.1.2 分页Controller方法

4.2 条件查询

4.2.1 创建查询对象

4.2.2 service

4.2.3 controller

五、新增和修改讲师接口开发

5.1 自动填充封装

5.1.1 在service-base模块中添加

5.1.2 在实体类添加自动填充注解

5.2 controller方法定义

5.2.1 新增

5.2.2 根据id查询

5.2.3 根据id修改


一、讲师管理模块配置和生成代码

1.1 讲师管理模块配置

1.1.1 在service下面service-edu模块中创建配置文件

resources目录下创建文件 application.properties

# 服务端口
server.port=8001
# 服务名
spring.application.name=service-edu

# 环境设置:dev、test、prod
spring.profiles.active=dev

# mysql数据库连接
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/guli?serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=root

#mybatis日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

或者在resources目录下创建文件 application.yml

#### application.yml
spring:
  application:
    name: service-edu
profiles:
    active: dev


####  application-dev.yml
server:
  port: 8001
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
mapper-locations: classpath:com/atguigu/service/*/mapper/*.xml
global-config:
    db-config:
      logic-delete-value: 1
logic-not-delete-value: 0
spring:
datasource:
    type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/guli?serverTimezone=GMT%2B8
username: root
password: root
hikari:
      connection-test-query: SELECT 1
connection-timeout: 60000
idle-timeout: 500000
max-lifetime: 540000
maximum-pool-size: 12
minimum-idle: 10
pool-name: GuliHikariPool
jackson:
    date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8

1.1.2 创建MP代码生成器

在test/java目录下创建包com.atguigu.eduservice,创建代码生成器:CodeGenerator.java

public class getCode {

    @Test
    public void main1() {

        // 1、创建代码生成器
        AutoGenerator mpg = new AutoGenerator();

        // 2、全局配置
        GlobalConfig gc = new GlobalConfig();
        String projectPath = System.getProperty("user.dir");
        System.out.println(projectPath);
        gc.setOutputDir(projectPath + "/src/main/java");
        gc.setAuthor("atguigu");
        gc.setOpen(false); //生成后是否打开资源管理器
        gc.setFileOverride(false); //重新生成时文件是否覆盖
        /*
         * mp生成service层代码,默认接口名称第一个字母有 I
         * UcenterService
         * */
        gc.setServiceName("%sService");	//去掉Service接口的首字母I
        gc.setIdType(IdType.ID_WORKER); //主键策略
        gc.setDateType(DateType.ONLY_DATE);//定义生成的实体类中日期类型
        gc.setSwagger2(true);//开启Swagger2模式

        mpg.setGlobalConfig(gc);

        // 3、数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://localhost:3306/guli?serverTimezone=GMT%2B8");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("root");
        dsc.setDbType(DbType.MYSQL);
        mpg.setDataSource(dsc);

        // 4、包配置
        PackageConfig pc = new PackageConfig();
        pc.setModuleName("serviceedu"); //模块名
        pc.setParent("com.atguigu");
        pc.setController("controller");
        pc.setEntity("entity");
        pc.setService("service");
        pc.setMapper("mapper");
        mpg.setPackageInfo(pc);

        // 5、策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setInclude("edu_teacher");
        strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
        strategy.setTablePrefix(pc.getModuleName() + "_"); //生成实体时去掉表前缀

        strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略
        strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作

        strategy.setRestControllerStyle(true); //restful api风格控制器
        strategy.setControllerMappingHyphenStyle(true); //url中驼峰转连字符

        mpg.setStrategy(strategy);

        // 6、执行
        mpg.execute();
    }
}

1.2 编写后台管理api接口

1.2.1 编写controller代码

@Autowired
private TeacherService teacherService;

@GetMapping
public List<Teacher> list(){
    return teacherService.list(null);
}

1.2.2 创建SpringBoot配置类

在edu包下创建config包,创建MyBatisPlusConfig.java

package com.guli.edu.config;

@Configuration
@EnableTransactionManagement
@MapperScan("com.atguigu.eduservice.mapper")
public class MyBatisPlusConfig {
    
}

1.2.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;
}

1.2.4 创建SpringBoot启动类

创建启动类 EduApplication.java,注意启动类的创建位置

@SpringBootApplication
public class EduApplication {

	public static void main(String[] args) {
		SpringApplication.run(EduApplication.class, args);
	}
}

1.2.5 运行启动类

访问http://localhost:8001/eduservice/teacher

得到json数据

1.2.6 统一返回的json时间格式

默认情况下json时间格式带有时区,并且是世界标准时间,和我们的时间差了八个小时

在application.properties中设置

#返回json的全局时间格式
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8

1.3 讲师逻辑删除功能

1.3.1 EduTeacherController添加删除方法

@DeleteMapping("{id}")
public boolean removeById(@PathVariable String id){
    return teacherService.removeById(id);
}

1.3.2 配置逻辑删除插件

MyBatisPlusConfig中配置

/**
      * 逻辑删除插件
      */
@Bean
public ISqlInjector sqlInjector() {
    return new LogicSqlInjector();
}

1.3.3 使用postman测试删除

测试结果:数据库中的is_deleted字段被修改为1

1.4 跨域配置

1.4.1 什么是跨域

浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域 。前后端分离开发中,需要考虑ajax跨域的问题。

这里我们可以从服务端解决这个问题

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值