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