中南民族大学实训spring boot+MyBaits Restful风格Web接口编写整合swagger+knife4j在线文档

1.在idea中创建spring boot项目,文件-新建-项目-spring Initializr,选择语言、位置,包等信息,-下一步-选择spring boot版本和相关依赖

2.引入swagger、knife4j相关依赖

         <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <version>3.0.3</version>
        </dependency>
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>swagger-bootstrap-ui</artifactId>
            <version>1.9.6</version>
        </dependency>

3.在.properties文件中为项目配置数据库相关设置,如果该文件打开出现乱码情况如下所示

可在设置中设置文件的编码格式为UTF-8默认为ISO-8859-1,即可

乱码问题解决之后设置驱动和数据源相关配置

#驱动
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据源名称
spring.datasource.name=defaultDataSource
# 数据源url
spring.datasource.url=jdbc:mysql://localhost:3306/vuetest?serverTimezone=UTC
# 账号密码
spring.datasource.username=****
spring.datasource.password=****

至此所有的创建工作已经完成啦,已经可以运行咱们的第一个spring boot项目啦,找到src下的Aplication文件

 如果控制台输出如下信息,那么咱们已经成功运行啦

4.接下来我们先写一个swagger整合knife4j的配置类,这样咱们在编写相关API的时候所有的信息都会同步到在线文档方便前后端人员的信息同步,减少后端开发人员花费大量的时间精力在编写文档上。

首先新建一个config包,在包里新建SwaggerConfig.Java配置文件

package com.example.demo.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

@Configuration
public class SwaggerConfig {
    @Bean
    public Docket createRestApi(){
        //Docket为摘要对象在这设置描述文件信息
        Docket docket = new Docket(DocumentationType.OAS_30);
        docket.apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller"))
                .build();
        return docket;
    }
    private ApiInfo apiInfo() {
        //使用ApiInfoBuilder进行定制
        return new ApiInfoBuilder()
                .title("在线接口文档")
                .description("描述信息")
                .contact(new Contact("小趴菜编程","https://blog.csdn.net/aricsya","3085692314@qq.com"))
                .version("1.0.0")
                .license("协议")
                .licenseUrl("www.baidu.com")
                .build();
    }
}

写好配置文件之后我们只需要在编写接口时加上相应的注解即可,然后就可以访问在线文档啦,地址为http://localhost:8080/doc.html。

5.接下来我们按照SSM新建相应的软件包、接口和实体类。

首先我们编写一个实体类,该类的属性和需要访问的数据库表中的字段一一对应,再次我以班级信息表为例编写对应的增删改查接口。

clsInfo.java

package com.example.demo.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;

@Data
@ApiModel("课程实体类")
public class ClsInfo {
    @ApiModelProperty("课程id")
    Integer clsid;
    @ApiModelProperty("课程名称")
    String classname;
    @ApiModelProperty("课程添加日期")
    Date createDate;
    @ApiModelProperty("课程人数")
    Integer totals;
}

clsMapper.java

package com.example.demo.mapper;

import com.example.demo.entity.ClsInfo;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface ClsMapper {
    @Select("SELECT * FROM `classinfo`")
    List<ClsInfo> getAllClassInfo();
    @Select("SELECT * FROM `classinfo`where clsid=#{clsid")
    ClsInfo getClassInfoByClsid(Integer clsid);
    @Insert("INSERT INTO `classinfo`(className,totals) VALUES(#{className},#{totals})")
    Integer insertClassInfo(ClsInfo clsInfo);
    @Update("UPDATE `classinfo` SET className=#{className},totals=#{totals} WHERE clsid=#{clsid}")
    Integer updateClassInfo(ClsInfo clsInfo);
    @Delete("DELETE FROM `classinfo` WHERE clsid=#{clsid}")
    Integer deleteClassInfo(Integer clsid);
}

ClsService.java

package com.example.demo.service;

import com.example.demo.entity.ClsInfo;

import java.util.List;

public interface ClsService {
    List<ClsInfo> getAllClassInfo();
    ClsInfo getClassInfoByClsid(Integer clsid);
    Integer insertClassInfo(ClsInfo clsInfo);
    Integer updateClassInfo(ClsInfo clsInfo);
    Integer deleteClassInfo(Integer clsid);
}

ClsServiceImpl.java

package com.example.demo.service.impl;

import com.example.demo.entity.ClsInfo;
import com.example.demo.mapper.ClsMapper;
import com.example.demo.service.ClsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
@Service
public class ClsServiceImpl implements ClsService {
    @Autowired
    public ClsMapper clsMapper;

    @Override
    public List<ClsInfo> getAllClassInfo() {
        return clsMapper.getAllClassInfo();
    }

    @Override
    public ClsInfo getClassInfoByClsid(Integer clsid) {
        return clsMapper.getClassInfoByClsid(clsid);
    }

    @Override
    public Integer insertClassInfo(ClsInfo clsInfo) {
        return clsMapper.insertClassInfo(clsInfo);
    }

    @Override
    public Integer updateClassInfo(ClsInfo clsInfo) {
        return clsMapper.updateClassInfo(clsInfo);
    }

    @Override
    public Integer deleteClassInfo(Integer clsid) {
        return clsMapper.deleteClassInfo(clsid);
    }
}

clsController.java

package com.example.demo.controller;

import com.example.demo.entity.ClsInfo;
import com.example.demo.service.ClsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@CrossOrigin
@Api(tags = "课程信息管理")
public class ClsController {
    @Autowired
    public ClsService service;

    @GetMapping("classInfo")
    @ApiOperation("查找所有课程信息")
    public List<ClsInfo> findAllClassInfo() {
        return service.getAllClassInfo();
    }
    @GetMapping("classInfo/{clsid}")
    @ApiOperation("根据id查询课程信息")
    public ClsInfo findClassInfoById(@PathVariable Integer clsid){
        return service.getClassInfoByClsid(clsid);
    }
    @PostMapping("classInfo")
    @ApiOperation("新课程级信息")
    public Integer insertClassInfo(@RequestBody ClsInfo clsInfo){
        return service.insertClassInfo(clsInfo);
    }
    @PutMapping("classInfo")
    @ApiOperation("修改课程信息")
    public Integer updateClassInfo(@RequestBody ClsInfo clsInfo){
        return service.updateClassInfo(clsInfo);
    }
    @DeleteMapping("classInfo/{clsid}")
    @ApiOperation("根据id删除课程信息")
    public Integer deleteClassInfo(@PathVariable Integer clsid) {
        return service.deleteClassInfo(clsid);
    }
}

至此所有的代码就已经书写完啦,运行项目然后就可以在在线接口文档中查看刚刚编写的接口啦。

项目运行成功

接着在在线文档中查看刚刚编写的接口和实体类

主页

实体类

接口

在接口中点击调试即可在线测试接口。

在上述的代码中默认大家都有一定的spring boot注解开发的知识储存所以,在编写代码的时候没有做过多的赘述,如果对代码有疑问的可以尽情留言哦,小编随时在线解答,当然上述代码只是实现了最简单的增删改查,如果需要更多功能(例如分页、上传等待)只需要在此基础上进行完善就可以了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值