软件开发流程:

  1. 需求分析:需求规格说明书、产品原型
  2. 设计:UI设计、数据库设计、接口设计
  3. 编码:项目代码、单元测试
  4. 测试:测试用例、测试报告
  5. 上线运维:软件环境安装、配置

前端:直接使用 nginx 启动

后端:导入 IDEA,创建 git 仓库

数据库:生成数据库表并导入数据

使用 mybatisX 生成实体类、mapper层和service层代码

mybatis:
  #mapper配置文件
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.sky.model
  configuration:
    #开启驼峰命名
    map-underscore-to-camel-case: true
 
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  global-config:
    db-config:
      logic-delete-field: is_delete # 全局逻辑删除的实体字段名
      logic-delete-value: 1 # 逻辑已删除值(默认为 1)
      logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)

前后端联调,nginx反向代理后端

upstream webservers {
    server 192.168.100.128:8080;
    server 192.168.100.129:8080;
}
server {
    listen 80;
    server_name localhost;
    location /api/ {
        proxy_pass http://webservers/admin/; #反向代理
    }
}

swagger 接口文档

        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <version>3.0.3</version>
        </dependency>
@Configuration
@Slf4j
public class WebMvcConfiguration extends WebMvcConfigurationSupport {
 
    /**
     * 通过knife4j生成接口文档
     * @return
     */
    @Bean
    public Docket docket() {
        ApiInfo apiInfo = new ApiInfoBuilder()
                .title("苍穹外卖项目接口文档")
                .version("2.0")
                .description("苍穹外卖项目接口文档")
                .build();
        Docket docket = new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.sky.controller"))
                .paths(PathSelectors.any())
                .build();
        return docket;
    }
 
    /**
     * 设置静态资源映射
     * @param registry
     */
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
}

swagger 注解

注解说明
@Api用在类上,例如controller,表示对类的说明
@ApiModel用在类上,例如entity、DTO、VO
@ApiModelProperty用在属性上,描述属性信息
@ApiOperation用在方法上,例如Controller的方法,说明方法的用途、作用
  1. 添加员工

捕获SQL异常:

public Result exceptionHandler(SQLIntegrityConstraintViolationException ex) {  
    String msg = ex.getMessage();  
    if (msg.contains("Duplicate entry")) {  
        String[] split = msg.split(" ");  
        String username = split[2];  
        return Result.error(username + MessageConstant.ALREADY_EXISTS);  
    } else {  
        return Result.error("操作失败");  
    }  
}
  1. 分页查询

需要配置 mybatis-plus

@Configuration
@MapperScan("com.sky.mapper")
public class MyBatisPlusConfig {
 
    /**
     * 拦截器配置
     *
     * @return
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // 分页插件
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}
  1. 根据id查询员工
  2. 编辑员工信息
  3. 停用启用员工账号