• 在线教育项目【老师服务】


    目录

    1.传智在线项目

    1.1功能简介

    1.2系统模块

    1.3系统架构

    2.数据库设计

    2.1 数据库

    2.2 数据表

    3.创建项目

    3.1 项目架构

    3.2 创建父项目:zx_parent_practise

    3.3:创建子项目:zx_common_practise

    3.4:创建子项目:zx_domain_practise

    3.5:创建子项目:zx_geteway

    3.6:创建子项目:zx_service_teacher

    4,老师模块的前置工作:

    4.1:JavaBean

    4.2:mapper

    4.3:service

    4.4:controller

    4.5:拷贝配置类

    4.6:访问swagger

    5,功能:老师的逻辑删除

    5.1:controller逻辑删除方法

    5.2:逻辑删除注解

    5.3:配置handler:进行异步消息处理

    5.4:配置application.yml文件

    5.5:在swagger中测试该方法

    6,功能:条件查询和分页

    6.1:Controller

    6.2:Service

    7,功能:添加老师,修改老师

    7.1:添加配置类:进行添加和修改时间的填充

    7.2:添加老师

    7.2.1:Controller

    7.2.2:Service

    7.3:修改老师

    7.3.1:Controller

    7.3.2:Service

    8,功能:删除老师,查询老师,批量删除老师

    8.1:删除老师

    8.1.1:Controller

    8.1.2:Service

    8.2:修改老师

    8.2.1:Controller

    8.2.2:Service

    8.3:修改老师

    8.3.1:Controller

    8.3.2:Service

    总结


    1.传智在线项目

    1.1功能简介

    • 做的什么模块?

      • 整个项目分为两大部分:前台部分、后台部分

      • 前台部分:为用户使用部分,可以进行视频的购买与学习。

      • 后台部分:为管理操作部分,进行视频上传与维护。

      • 本课程主要完成的是后台部分

    • 用到什么技术?

      • 后端:SpringCloud alibaba核心组件Nacos+SSM+mybatis-plus+swagger-ui+POI+Redis + JavaMail +RabbitMQ+EasyExcel.....

      • 前端:Vue全家桶:Vue+Vue-Router+Vuex+SPA + element ui admin

    1.2系统模块

    1.3系统架构

    • 前后端分离开发:

      • 解耦

      • 后端和前端完全分离,并且后台接口可以供给多端使用!(APP,微信,PC,WAP)(Restful风格的接口可以给任何应用去使用)

    2.数据库设计

    2.1 数据库

    zx_edu_course:课程相关的库

    zx_edu_teacher:老师板块相关的库

    zx_edu_user:登录用户相关的库

    zx_edu_vod:视频相关的库


    2.2 数据表

     本章主要记录学习中:老师后端的增删改查(用到了该表)

    3.创建项目

    3.1 项目架构

    项目结构图:

    3.2 创建父项目:zx_parent_practise

     在pom.xml中导入依赖

    1. "1.0" encoding="UTF-8"?>
    2. <project xmlns="http://maven.apache.org/POM/4.0.0"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    5. <modelVersion>4.0.0modelVersion>
    6. <groupId>com.czxy.zxgroupId>
    7. <artifactId>zx_parent_practiseartifactId>
    8. <packaging>pompackaging>
    9. <version>1.0-SNAPSHOTversion>
    10. <modules>
    11. <module>zx_common_practisemodule>
    12. <module>zx_domain_practisemodule>
    13. <module>zx_gatewaymodule>
    14. <module>zx_service_teachermodule>
    15. modules>
    16. <properties>
    17. <maven.compiler.source>8maven.compiler.source>
    18. <maven.compiler.target>8maven.compiler.target>
    19. <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
    20. <java.version>1.8java.version>
    21. <spring-cloud-release.version>Hoxton.SR3spring-cloud-release.version>
    22. <nacos.version>1.1.0nacos.version>
    23. <alibaba.cloud.version>2.2.1.RELEASEalibaba.cloud.version>
    24. <mysql.version>5.1.32mysql.version>
    25. <mybatis.plus.version>3.4.0mybatis.plus.version>
    26. <druid.starter.version>1.1.9druid.starter.version>
    27. <jwt.jjwt.version>0.9.0jwt.jjwt.version>
    28. <jwt.joda.version>2.9.7jwt.joda.version>
    29. <swagger.version>2.7.0swagger.version>
    30. <swagger.anno.version>1.5.13swagger.anno.version>
    31. <beanutils.version>1.9.3beanutils.version>
    32. <aliyun.sdk.core.version>3.3.1aliyun.sdk.core.version>
    33. <aliyun.sdk.dysmsapi.version>1.0.0aliyun.sdk.dysmsapi.version>
    34. <fastjson.version>1.2.9fastjson.version>
    35. <zx.version>1.0-SNAPSHOTzx.version>
    36. properties>
    37. <parent>
    38. <groupId>org.springframework.bootgroupId>
    39. <artifactId>spring-boot-starter-parentartifactId>
    40. <version>2.2.5.RELEASEversion>
    41. parent>
    42. <dependencyManagement>
    43. <dependencies>
    44. <dependency>
    45. <groupId>org.springframework.cloudgroupId>
    46. <artifactId>spring-cloud-dependenciesartifactId>
    47. <version>${spring-cloud-release.version}version>
    48. <type>pomtype>
    49. <scope>importscope>
    50. dependency>
    51. <dependency>
    52. <groupId>com.alibaba.nacosgroupId>
    53. <artifactId>nacos-clientartifactId>
    54. <version>${nacos.version}version>
    55. dependency>
    56. <dependency>
    57. <groupId>com.alibaba.cloudgroupId>
    58. <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
    59. <version>${alibaba.cloud.version}version>
    60. dependency>
    61. <dependency>
    62. <groupId>com.alibaba.cloudgroupId>
    63. <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
    64. <version>${alibaba.cloud.version}version>
    65. dependency>
    66. <dependency>
    67. <groupId>com.alibaba.cloudgroupId>
    68. <artifactId>spring-cloud-starter-alibaba-sentinelartifactId>
    69. <version>${alibaba.cloud.version}version>
    70. dependency>
    71. <dependency>
    72. <groupId>com.alibaba.cloudgroupId>
    73. <artifactId>spring-cloud-starter-alibaba-seataartifactId>
    74. <version>${alibaba.cloud.version}version>
    75. dependency>
    76. <dependency>
    77. <groupId>com.baomidougroupId>
    78. <artifactId>mybatis-plus-boot-starterartifactId>
    79. <version>${mybatis.plus.version}version>
    80. dependency>
    81. <dependency>
    82. <groupId>com.baomidougroupId>
    83. <artifactId>mybatis-plus-annotationartifactId>
    84. <version>${mybatis.plus.version}version>
    85. dependency>
    86. <dependency>
    87. <groupId>mysqlgroupId>
    88. <artifactId>mysql-connector-javaartifactId>
    89. <version>${mysql.version}version>
    90. dependency>
    91. <dependency>
    92. <groupId>com.alibabagroupId>
    93. <artifactId>druid-spring-boot-starterartifactId>
    94. <version>${druid.starter.version}version>
    95. dependency>
    96. <dependency>
    97. <groupId>io.springfoxgroupId>
    98. <artifactId>springfox-swagger2artifactId>
    99. <version>${swagger.version}version>
    100. dependency>
    101. <dependency>
    102. <groupId>io.springfoxgroupId>
    103. <artifactId>springfox-swagger-uiartifactId>
    104. <version>${swagger.version}version>
    105. dependency>
    106. <dependency>
    107. <groupId>io.swaggergroupId>
    108. <artifactId>swagger-annotationsartifactId>
    109. <version>${swagger.anno.version}version>
    110. dependency>
    111. <dependency>
    112. <groupId>commons-beanutilsgroupId>
    113. <artifactId>commons-beanutilsartifactId>
    114. <version>${beanutils.version}version>
    115. dependency>
    116. <dependency>
    117. <groupId>io.jsonwebtokengroupId>
    118. <artifactId>jjwtartifactId>
    119. <version>${jwt.jjwt.version}version>
    120. dependency>
    121. <dependency>
    122. <groupId>joda-timegroupId>
    123. <artifactId>joda-timeartifactId>
    124. <version>${jwt.joda.version}version>
    125. dependency>
    126. <dependency>
    127. <groupId>com.aliyuncsgroupId>
    128. <artifactId>aliyun-java-sdk-coreartifactId>
    129. <version>${aliyun.sdk.core.version}version>
    130. dependency>
    131. <dependency>
    132. <groupId>com.aliyuncs.dysmsapigroupId>
    133. <artifactId>aliyun-java-sdk-dysmsapiartifactId>
    134. <version>${aliyun.sdk.dysmsapi.version}version>
    135. dependency>
    136. <dependency>
    137. <groupId>com.alibabagroupId>
    138. <artifactId>fastjsonartifactId>
    139. <version>${fastjson.version}version>
    140. dependency>
    141. <dependency>
    142. <groupId>com.czxy.zxgroupId>
    143. <artifactId>zx_common_practiseartifactId>
    144. <version>${zx.version}version>
    145. dependency>
    146. <dependency>
    147. <groupId>com.czxy.zxgroupId>
    148. <artifactId>zx_domain_practiseartifactId>
    149. <version>${zx.version}version>
    150. dependency>
    151. dependencies>
    152. dependencyManagement>
    153. project>

    3.3:创建子项目:zx_common_practise

    在pom.xml文件中导入依赖

    1. <dependencies>
    2. <dependency>
    3. <groupId>org.springframework.bootgroupId>
    4. <artifactId>spring-boot-starter-webartifactId>
    5. dependency>
    6. <dependency>
    7. <groupId>org.projectlombokgroupId>
    8. <artifactId>lombokartifactId>
    9. dependency>
    10. <dependency>
    11. <groupId>io.springfoxgroupId>
    12. <artifactId>springfox-swagger2artifactId>
    13. dependency>
    14. <dependency>
    15. <groupId>io.springfoxgroupId>
    16. <artifactId>springfox-swagger-uiartifactId>
    17. dependency>
    18. <dependency>
    19. <groupId>io.jsonwebtokengroupId>
    20. <artifactId>jjwtartifactId>
    21. dependency>
    22. <dependency>
    23. <groupId>joda-timegroupId>
    24. <artifactId>joda-timeartifactId>
    25. dependency>
    26. <dependency>
    27. <groupId>commons-beanutilsgroupId>
    28. <artifactId>commons-beanutilsartifactId>
    29. dependency>
    30. <dependency>
    31. <groupId>com.aliyungroupId>
    32. <artifactId>aliyun-java-sdk-coreartifactId>
    33. <version>4.5.1version>
    34. dependency>
    35. <dependency>
    36. <groupId>com.aliyun.ossgroupId>
    37. <artifactId>aliyun-sdk-ossartifactId>
    38. <version>3.10.2version>
    39. dependency>
    40. <dependency>
    41. <groupId>com.aliyungroupId>
    42. <artifactId>aliyun-java-sdk-vodartifactId>
    43. <version>2.15.11version>
    44. dependency>
    45. <dependency>
    46. <groupId>com.alibabagroupId>
    47. <artifactId>fastjsonartifactId>
    48. <version>1.2.28version>
    49. dependency>
    50. <dependency>
    51. <groupId>org.jsongroupId>
    52. <artifactId>jsonartifactId>
    53. <version>20170516version>
    54. dependency>
    55. <dependency>
    56. <groupId>com.google.code.gsongroupId>
    57. <artifactId>gsonartifactId>
    58. <version>2.8.2version>
    59. dependency>
    60. <dependency>
    61. <groupId>com.aliyungroupId>
    62. <artifactId>aliyun-sdk-vod-uploadartifactId>
    63. <version>1.4.13version>
    64. dependency>
    65. dependencies>

     导入通用的配置文件:异常,验证码动图,结果封装,邮件,视频工具类等等

    3.4:创建子项目:zx_domain_practise

    依赖:

    1. <dependencies>
    2. <dependency>
    3. <groupId>io.swaggergroupId>
    4. <artifactId>swagger-annotationsartifactId>
    5. <version>1.5.13version>
    6. dependency>
    7. <dependency>
    8. <groupId>org.projectlombokgroupId>
    9. <artifactId>lombokartifactId>
    10. dependency>
    11. <dependency>
    12. <groupId>org.springframework.bootgroupId>
    13. <artifactId>spring-boot-starter-jsonartifactId>
    14. dependency>
    15. <dependency>
    16. <groupId>com.baomidougroupId>
    17. <artifactId>mybatis-plus-annotationartifactId>
    18. dependency>
    19. dependencies>

    3.5:创建子项目:zx_geteway

    依赖:

    1. <dependencies>
    2. <dependency>
    3. <groupId>org.springframework.cloudgroupId>
    4. <artifactId>spring-cloud-starter-gatewayartifactId>
    5. dependency>
    6. <dependency>
    7. <groupId>com.alibaba.cloudgroupId>
    8. <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
    9. dependency>
    10. dependencies>

     application.yml:在yml文件中配置一下网关,目的访问其他服务,统一经过网关进行访问

    端口:10010

    1. #端口号
    2. server:
    3. port: 10010
    4. spring:
    5. application:
    6. name: zx-gateway
    7. servlet:
    8. multipart:
    9. max-file-size: 2MB #上传文件的大小
    10. cloud:
    11. nacos:
    12. discovery:
    13. server-addr: 127.0.0.1:8848 #nacos服务地址
    14. gateway:
    15. discovery:
    16. locator:
    17. enabled: true #开启服务注册和发现的功能,自动创建router以服务名开头的请求路径转发到对应的服务
    18. lowerCaseServiceId: true #将请求路径上的服务名配置为小写
    19. sc:
    20. jwt:
    21. secret: sc@Login(Auth}*^31)&czxy% # 登录校验的密钥
    22. pubKeyPath: D:/rsa/rsa.pub # 公钥地址
    23. priKeyPath: D:/rsa/rsa.pri # 私钥地址
    24. expire: 360 # 过期时间,单位分钟
    25. filter:
    26. allowPaths:
    27. - swagger
    28. - /api-docs
    29. - /user/login
    30. - /user/info
    31. - /user/register
    32. - /user/sendemail
    33. - /user/active
    34. - /verifycode

     导入跨域处理类:前端访问后端时会出现跨域的错误,该配置类进行处理

    1. @Configuration
    2. public class GlobalCorsConfig {
    3. @Bean
    4. public WebFilter corsFilter2() {
    5. return (ServerWebExchange ctx, WebFilterChain chain) -> {
    6. ServerHttpRequest request = ctx.getRequest();
    7. if (CorsUtils.isCorsRequest(request)) {
    8. HttpHeaders requestHeaders = request.getHeaders();
    9. ServerHttpResponse response = ctx.getResponse();
    10. HttpMethod requestMethod = requestHeaders.getAccessControlRequestMethod();
    11. HttpHeaders headers = response.getHeaders();
    12. headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, requestHeaders.getOrigin());
    13. headers.addAll(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS,
    14. requestHeaders.getAccessControlRequestHeaders());
    15. if (requestMethod != null) {
    16. headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, requestMethod.name());
    17. }
    18. headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS, "true");
    19. headers.add(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "*");
    20. if (request.getMethod() == HttpMethod.OPTIONS) {
    21. response.setStatusCode(HttpStatus.OK);
    22. return Mono.empty();
    23. }
    24. }
    25. return chain.filter(ctx);
    26. };
    27. }

    配置网关:启动类

    1. @SpringBootApplication
    2. //配置服务发现
    3. @EnableDiscoveryClient
    4. public class GatewayApplication {
    5. public static void main(String[] args) {
    6. SpringApplication.run(GatewayApplication.class,args);
    7. }
    8. }

    3.6:创建子项目:zx_service_teacher

    老师服务:今天主要的老师服务后端的增删改查

     导入依赖

    1. <dependencies>
    2. <dependency>
    3. <groupId>org.springframework.bootgroupId>
    4. <artifactId>spring-boot-starter-webartifactId>
    5. dependency>
    6. <dependency>
    7. <groupId>com.alibaba.nacosgroupId>
    8. <artifactId>nacos-clientartifactId>
    9. dependency>
    10. <dependency>
    11. <groupId>com.alibaba.cloudgroupId>
    12. <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
    13. dependency>
    14. <dependency>
    15. <groupId>io.springfoxgroupId>
    16. <artifactId>springfox-swagger2artifactId>
    17. dependency>
    18. <dependency>
    19. <groupId>io.springfoxgroupId>
    20. <artifactId>springfox-swagger-uiartifactId>
    21. dependency>
    22. <dependency>
    23. <groupId>org.springframework.cloudgroupId>
    24. <artifactId>spring-cloud-starter-openfeignartifactId>
    25. dependency>
    26. <dependency>
    27. <groupId>org.springframework.bootgroupId>
    28. <artifactId>spring-boot-starter-testartifactId>
    29. dependency>
    30. <dependency>
    31. <groupId>com.baomidougroupId>
    32. <artifactId>mybatis-plus-boot-starterartifactId>
    33. <version>${mybatis.plus.version}version>
    34. dependency>
    35. <dependency>
    36. <groupId>mysqlgroupId>
    37. <artifactId>mysql-connector-javaartifactId>
    38. dependency>
    39. <dependency>
    40. <groupId>com.czxy.zxgroupId>
    41. <artifactId>zx_common_practiseartifactId>
    42. dependency>
    43. <dependency>
    44. <groupId>com.czxy.zxgroupId>
    45. <artifactId>zx_domain_practiseartifactId>
    46. dependency>
    47. <dependency>
    48. <groupId>org.springframework.bootgroupId>
    49. <artifactId>spring-boot-starter-data-redisartifactId>
    50. dependency>
    51. <dependency>
    52. <groupId>org.springframework.bootgroupId>
    53. <artifactId>spring-boot-starter-mailartifactId>
    54. dependency>
    55. <dependency>
    56. <groupId>org.springframework.bootgroupId>
    57. <artifactId>spring-boot-starter-amqpartifactId>
    58. dependency>
    59. <dependency>
    60. <groupId>com.alibabagroupId>
    61. <artifactId>fastjsonartifactId>
    62. dependency>
    63. <dependency>
    64. <groupId>org.springframework.bootgroupId>
    65. <artifactId>spring-boot-devtoolsartifactId>
    66. <optional>trueoptional>
    67. dependency>
    68. dependencies>

    配置application.yml

    # 服务端口号
    server:
      port: 9999
    # 服务名
    spring:
      application:
        name: teacher-service
      datasource:
        driverClassName: com.mysql.jdbc.Driver
        url: jdbc:mysql://127.0.0.1:3306/zx_edu_teacher?useUnicode=true&characterEncoding=utf8
        username: root
        password: root
        druid:    #druid 连接池配置
          initial-size: 1       #初始化连接池大小
          min-idle: 1           #最小连接数
          max-active: 20        #最大连接数
          test-on-borrow: true  #获取连接时候验证,会影响性能
      cloud:
        nacos:
          discovery:
            server-addr: 127.0.0.1:8848   #nacos服务地址
      redis:
        database: 0       #数据库索引,取值0-15,表示16个库可选择
        host: 127.0.0.1   #服务器地址
        port: 6379        #服务器连接端口号
      mail:
        host: smtp.126.com          #发送邮件服务器
        username: itcast_lt@126.com #账号
        password: 1qaz2wsx          #密码
        default-encoding: UTF-8     #默认编码时
      rabbitmq:
        host: 127.0.0.1
        port: 5672
        username: guest
        password: guest
        virtualHost: /
      devtools:
        restart:
          enabled: true  #设置开启热部署
          additional-paths: src/main/java #重启目录
          exclude: WEB-INF/**
      freemarker:
        cache: false    #页面不加载缓存,修改即时生效
    
    #开启log4j打印SQL语句
    logging:
      level:
        com:
          czxy:
            zx:
              teacher:
                mapper: debug
    
    # mp日志打印
    mybatis-plus:
      configuration:
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
      global-config:
        db-config:
          logic-delete-value: 1
          logic-not-delete-value: 0 

    配置老师启动类:

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

     @SpringBootApplication:来标注一个主程序类,说明这是一个Spring Boot应用
    @EnableDiscoveryClient:配置服务发现
    @EnableFeignClients:配置远程调用Feign

    4,老师模块的前置工作:

    4.1:JavaBean

     老师:JavaBean

    1. @Data//lombok注解
    2. @ApiModel(value = "EduTeacher对象",description = "讲师")//swagger注解
    3. public class EduTeacher {
    4. @TableId(value = "id",type = IdType.AUTO)//mybatis-plus的注解
    5. @ApiModelProperty(value = "讲师ID")//swagger注解
    6. private String id;
    7. @ApiModelProperty(value = "讲师姓名")
    8. private String name;
    9. @ApiModelProperty(value = "讲师资历,一句话说明讲师")
    10. private String intro;
    11. @ApiModelProperty(value = "讲师简介")
    12. private String career;
    13. @ApiModelProperty(value = "头衔 1高级讲师 2首席讲师")
    14. private Integer level;
    15. @ApiModelProperty(value = "讲师头像")
    16. private String avatar;
    17. @ApiModelProperty(value = "讲师排序")
    18. private Integer sort;
    19. @ApiModelProperty(value = "逻辑删除 1已删除, 0未删除")
    20. @TableField(value = "is_deleted",fill = FieldFill.INSERT)
    21. @TableLogic//逻辑删除
    22. private Integer isDeleted;
    23. @ApiModelProperty(value = "创建时间")
    24. @TableField(value = "gmt_create",fill = FieldFill.INSERT)
    25. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    26. private Date gmtCreate;
    27. @ApiModelProperty(value = "更新时间")
    28. @TableField(value = "gmt_modified",fill = FieldFill.INSERT_UPDATE)
    29. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    30. private Date gmtModified;
    31. }

    4.2:mapper

    1. @Mapper
    2. public interface TeacherMapper extends BaseMapper {
    3. }

    4.3:service

    接口:

    1. public interface EduTeacherService extends IService {
    2. Page condition(TeacherVo teacherVo, Integer current, Integer size);
    3. }

    实现类:

    1. @Service
    2. //开启事务管理
    3. @Transactional
    4. public class EduTeacherServiceImpl extends ServiceImpl implements EduTeacherService {
    5. @Override
    6. public Page condition(TeacherVo teacherVo, Integer current, Integer size) {
    7. //创建条件
    8. QueryWrapper eduTeacherQueryWrapper = new QueryWrapper<>();
    9. if (StringUtils.isNotBlank(teacherVo.getName())){
    10. eduTeacherQueryWrapper.like("name",teacherVo.getName());
    11. }
    12. if (StringUtils.isNotBlank(teacherVo.getLevel())){
    13. eduTeacherQueryWrapper.eq("level",teacherVo.getLevel());
    14. }
    15. if (StringUtils.isNotBlank(teacherVo.getBeginDate())){
    16. eduTeacherQueryWrapper.ge("gmt_create",teacherVo.getBeginDate()+"00:00:00");
    17. }
    18. if (StringUtils.isNotBlank(teacherVo.getEndDate())){
    19. eduTeacherQueryWrapper.le("gmt_create",teacherVo.getEndDate()+"00:00:00");
    20. }
    21. //分页
    22. Page eduTeacherPage = new Page<>(current, size);
    23. //查询
    24. baseMapper.selectPage(eduTeacherPage,eduTeacherQueryWrapper);
    25. return eduTeacherPage;
    26. }
    27. }

    4.4:controller

    4.5:拷贝配置类

    一个是进行swagger测试的配置类

    一个是进行Mybatispus分页插件的配置类 

    4.6:访问swagger

    配置网关就通过:网关访问服务的方式进行访问swagger.ui.html

    通过网关访问的地址:http://localhost:10010/teacher-service/swagger-ui.html#/

     咱们再看一下直接访问老师服务地址:http://localhost:9999/swagger-ui.html

     两种都可以进行访问

    5,功能:老师的逻辑删除

    5.1:controller逻辑删除方法

    1. @DeleteMapping("/{teacherid}")
    2. @ApiOperation(value = "通过id删除老师")
    3. public BaseResult deleteByid(@PathVariable("teacherid")Integer teacherid){
    4. boolean flag = eduTeacherService.removeById(teacherid);
    5. if (flag){
    6. return BaseResult.ok("删除成功");
    7. }else {
    8. return BaseResult.error("删除失败");
    9. }
    10. }

    5.2:逻辑删除注解

    该注解在老师JavaBean中进行配置:

    1. @ApiModelProperty(value = "逻辑删除 1已删除, 0未删除")
    2. //这个注解属于swagger:用来标识
    3. @TableField(value = "is_deleted",fill = FieldFill.INSERT)
    4. //用来进行填充默认数据
    5. @TableLogic//逻辑删除
    6. private Integer isDeleted;

    5.3:配置handler:进行异步消息处理

    1. @Component
    2. public class TeacherMetaObjectHandler implements MetaObjectHandler {
    3. @Override
    4. public void insertFill(MetaObject metaObject) {
    5. // 添加-自动填充数据
    6. setFieldValByName("isDeleted", 0, metaObject);
    7. // 添加时间、修改时间
    8. setFieldValByName("gmtCreate", new Date(), metaObject);
    9. setFieldValByName("gmtModified", new Date(), metaObject);
    10. }
    11. @Override
    12. public void updateFill(MetaObject metaObject) {
    13. // 修改时间
    14. setFieldValByName("gmtModified", new Date(), metaObject);
    15. }
    16. }

    5.4:配置application.yml文件

    # mp日志打印
    mybatis-plus:
      configuration:
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
      global-config:
        db-config:
          logic-delete-value: 1
    #删除数据库中对应列的值为1
          logic-not-delete-value: 0
    

    #不删除数据库中对应的列值为0

    5.5:在swagger中测试该方法

    删除id为10的土豆

     

     成功删除,查看一下数据库数据

    6,功能:条件查询和分页

    6.1:Controller

     这个条件查询和分页还是挺重要的

    1. @ApiOperation("条件查询老师")
    2. @PostMapping("/condition/{current}/{size}")
    3. public BaseResult condition(@RequestBody TeacherVo teacherVo,Integer current,Integer size){
    4. Page condition = eduTeacherService.condition(teacherVo, current, size);
    5. if (condition!=null){
    6. return BaseResult.ok("查询成功",condition.getRecords());
    7. }else {
    8. return BaseResult.error("查询失败");
    9. }
    10. }

    6.2:Service

    1. @Service
    2. //开启事务管理
    3. @Transactional
    4. public class EduTeacherServiceImpl extends ServiceImpl implements EduTeacherService {
    5. @Override
    6. public Page condition(TeacherVo teacherVo, Integer current, Integer size) {
    7. //创建条件
    8. QueryWrapper eduTeacherQueryWrapper = new QueryWrapper<>();
    9. if (StringUtils.isNotBlank(teacherVo.getName())){
    10. eduTeacherQueryWrapper.like("name",teacherVo.getName());
    11. }
    12. if (StringUtils.isNotBlank(teacherVo.getLevel())){
    13. eduTeacherQueryWrapper.eq("level",teacherVo.getLevel());
    14. }
    15. if (StringUtils.isNotBlank(teacherVo.getBeginDate())){
    16. eduTeacherQueryWrapper.ge("gmt_create",teacherVo.getBeginDate()+"00:00:00");
    17. }
    18. if (StringUtils.isNotBlank(teacherVo.getEndDate())){
    19. eduTeacherQueryWrapper.le("gmt_create",teacherVo.getEndDate()+"00:00:00");
    20. }
    21. //分页
    22. Page eduTeacherPage = new Page<>(current, size);
    23. //查询
    24. baseMapper.selectPage(eduTeacherPage,eduTeacherQueryWrapper);
    25. return eduTeacherPage;
    26. }

    7,功能:添加老师,修改老师

    7.1:添加配置类:进行添加和修改时间的填充

     配置类上面已经给出

    7.2:添加老师

    7.2.1:Controller

    1. @ApiOperation("添加老师")
    2. @PostMapping
    3. public BaseResult addteacher(@RequestBody EduTeacher eduTeacher){
    4. boolean flag = eduTeacherService.save(eduTeacher);
    5. if (flag){
    6. return BaseResult.ok("添加成功");
    7. }else {
    8. return BaseResult.error("添加失败");
    9. }
    10. }

    7.3:修改老师

    7.3.1:Controller

    1. @PutMapping
    2. @ApiOperation(value = "修改老师")
    3. public BaseResult updateteacher(@RequestBody EduTeacher eduTeacher){
    4. boolean flag = eduTeacherService.updateById(eduTeacher);
    5. if (flag){
    6. return BaseResult.ok("修改成功");
    7. }else {
    8. return BaseResult.error("修改失败");
    9. }
    10. }

    8,功能:删除老师,查询老师,批量删除老师

    8.1:删除老师

    8.1.1:Controller

    1. @DeleteMapping("/{teacherid}")
    2. @ApiOperation(value = "通过id删除老师")
    3. public BaseResult deleteByid(@PathVariable("teacherid")Integer teacherid){
    4. boolean flag = eduTeacherService.removeById(teacherid);
    5. if (flag){
    6. return BaseResult.ok("删除成功");
    7. }else {
    8. return BaseResult.error("删除失败");
    9. }
    10. }

    8.2:查询老师

    8.2.1:Controller

    1. @GetMapping("/{teacherid}")
    2. @ApiOperation("通过id查询老师详情")
    3. public BaseResult selectByid(@PathVariable("teacherid") Integer teacherid){
    4. EduTeacher eduTeacher = eduTeacherService.getById(teacherid);
    5. if (eduTeacher!=null){
    6. return BaseResult.ok("查询成功",eduTeacher);
    7. }else {
    8. return BaseResult.error("查询失败");
    9. }
    10. }

    8.3:批量删除老师

    8.3.1:Controller

    1. @PostMapping("/batchdelete")
    2. @ApiOperation("批量删除老师")
    3. public BaseResult batchdelete(@RequestBody List ids){
    4. boolean flag = eduTeacherService.removeByIds(ids);
    5. if (flag){
    6. return BaseResult.ok("批量删除成功");
    7. }else {
    8. return BaseResult.error("批量删除失败");
    9. }
    10. }

    总结

    主要功能:条件和分页查询,其余的功能都是通过MybatisPlus中的通用Service进行调用方法,以用来达到功能的实现

    BaseRsult工具类:用来封装数据进行返回

     GlobalCorsConfig配置类:用来处理跨域

     TeacherMetaObjectHandler:对信息进行处理,该老师服务中应用了。例如:每条数据的创建时间和修改时间。

  • 相关阅读:
    近似熵的计算
    【分享】集简云小程序识别身份证同步到表单流程搭建示例
    Java集合和数组的区别
    深度学习 Day 16——利用卷神经网络实现咖啡豆的识别
    JavaScript同步与异步
    神经网络权重是什么意思,神经网络权值和阈值
    IEEE802.2之LLC(逻辑链路控制)
    第2-4-7章 docker安装WorkBench-规则引擎Drools-业务规则管理系统-组件化-中台
    Java:在Java 8及更高版本中使用Java流
    Node.js | 数据加密 —— 内置模块 crypto 的应用
  • 原文地址:https://blog.csdn.net/m0_64550837/article/details/126677547