相关工具:IDEA 2019,Navicat
SpringBoot版本:2.1.7RELEASE
Swagger版本:2.9.2
Mybatis版本:1.3.0
MySQL版本:5.7
本工程整合SpringBoot、Swagger、MySQL,详细阐述从新建工程到启动工程。
1.新建SpringBoot工程:
File->New->Project
->Spring Initializr->点击Next
输入Group:com.gahui,Artifact:swagger->点击Next
点击Web->勾选Spring Web Start->点击Next
->Finished
完成新建Spring工程!
2.新建数据表:
这里的话,你使用的数据库名没有限制,只需要到时在application.xml文件中改成对应的数据库名即可即可,这里我新建的数据表名为User,结构如下:
插入两条记录:
3.具体代码:
找到并且删除目录下的application.properties文件,同时在相同路径新建application.yml文件,最后的工程目录如下:
pom.xml内容如下:
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.1.7.RELEASE
com.gahui
swagger
0.0.1-SNAPSHOT
swagger
Demo project for Spring Boot
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
io.springfox
springfox-swagger2
2.9.2
io.springfox
springfox-swagger-ui
2.9.2
mysql
mysql-connector-java
5.1.47
runtime
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.3.0
org.springframework.boot
spring-boot-maven-plugin
pom.xml文件内容说明:使用Swagger组件的话,需要引入依赖库为:
io.springfox
springfox-swagger2
2.9.2
io.springfox
springfox-swagger-ui
2.9.2
因为使用到Mybatis和MySQL(版本为5.7)数据库,所以也需要引入相关依赖库:
mysql
mysql-connector-java
5.1.47
runtime
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.3.0
Swagger2Config.java代码如下:
package com.gahui.swagger.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
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;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class Swagger2Config {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.gahui.swagger.controller"))
.paths(PathSelectors.any())
.build()
.apiInfo(apiInfo());
}
private ApiInfo apiInfo() {
Contact contact = new Contact("Gahui","gahui_liao.com","[email protected]");
return new ApiInfoBuilder()
.title("Swagger测试")
.description("Test By Gahui_Liao")
.termsOfServiceUrl("Terms of service")
// .contact("[email protected]")
.contact(contact)
.version("1.0")
.build();
}
}
User.java内容如下:
package com.gahui.swagger.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ApiModel(value = "用户字段信息")
public class User {
@ApiModelProperty(value = "用户ID")
private int userId;
@ApiModelProperty(value = "用户名称")
private String userName;
@ApiModelProperty(value = "用户密码")
private String userPassword;
public User() {
}
public User(int userId, String userName, String userPassword) {
this.userId = userId;
this.userName = userName;
this.userPassword = userPassword;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPassword() {
return userPassword;
}
public void setUserPassword(String userPassword) {
this.userPassword = userPassword;
}
@Override
public String toString() {
return "User{" +
"userId=" + userId +
", userName='" + userName + '\'' +
", userPassword='" + userPassword + '\'' +
'}';
}
}
加上Swagger2的注解“@ApiModel”(用于实体类)和“@ApiProperty”(用于实体类属性),这里的话可以简单理解为这两个注解就是表明此处需要备注相应的信息。
UserDao.java内容如下:
package com.gahui.swagger.dao;
import com.gahui.swagger.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface UserDao {
List queryAllUser();
User queryUserById(@Param("userId") long id);
}
这里需要加上“@Mapper”注解,声明这是一个需要映射的类,具体映射文件其实就是application.xml文件的配置内容,只不过里面是配置了包扫描,具体可以看本文后续内容。
UserService.java内容如下:
package com.gahui.swagger.service;
import com.gahui.swagger.entity.User;
import java.util.List;
public interface UserService {
List queryAllUser();
User queryUserById(long userId);
}
UserServiceImpl.java内容如下:
package com.gahui.swagger.service;
import com.gahui.swagger.dao.UserDao;
import com.gahui.swagger.entity.User;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Resource
UserDao userDao;
@Override
public List queryAllUser() {
return userDao.queryAllUser();
}
@Override
public User queryUserById(long userId) {
return userDao.queryUserById(userId);
}
}
这里需要加上“@Service”注解,声明这是一个服务类,实现的是“UserService”这个接口。
UserController.java内容如下:
package com.gahui.swagger.controller;
import com.gahui.swagger.entity.User;
import com.gahui.swagger.service.UserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@Api(value = "用户管理层",tags = "获取用户信息")
@RestController
@RequestMapping("/user")
public class UserController {
@Resource
UserService userService;
@ApiOperation(value = "获取用户信息",notes = "根据用户ID获取用户信息")
@RequestMapping(value = "/queryUserById/{id}",method = RequestMethod.POST)
@ResponseBody
public User queryUserById(@PathVariable("id") long userId){
return userService.queryUserById(userId);
}
@ApiOperation(value = "获取用户信息",notes = "获取所有用户信息")
@RequestMapping(value = "/queryAll",method = RequestMethod.GET)
// @GetMapping(value = "/queryAll")
@ResponseBody
public List queryAll(){
return userService.queryAllUser();
}
}
这里使用到注解“@Api”,这是一个声明在controller类上的注解,可以备注信息一些相关的信息,大概内容就是声明这是一个什么控制层,用于获取什么信息。
SwaggerApplication.java内容如下:
package com.gahui.swagger;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SwaggerApplication {
public static void main(String[] args) {
SpringApplication.run(SwaggerApplication.class, args);
}
}
这是SpringBoot的启动类。
userDaoMapper.xml内容如下:
这个文件之前也提到,是属于需要Spring扫描的文件,对应的是UserDao的映射。
application.yml内容如下:
这里注意要修改文件内容为你对应的数据库名、账号、密码!
spring:
# 数据库配置
datasource:
url: jdbc:mysql://127.0.0.1:3306/替换为你的数据库名?useUnicode=true&characterEncoding=utf8&useSSL=true
username: MySQL数据库账号,默认为root
password: MySQL数据库密码
driver-class-name: com.mysql.jdbc.Driver
# 服务器配置
server:
port: 8080
# mybatis配置
mybatis:
# 配置映射类所在包名
type-aliases-package: com.gahui.swagger.entity
# 配置mapper xml文件所在路径,扫描mapper下所有的xml文件
mapper-locations: classpath:mapper/*.xml
#mybatis配置文件路径
config-location: classpath:mybatis-config.xml
mybatis-config.xml内容如下:
这个也属于配置文件,主要是Mybatis的一些相关配置,具体想了解的同学可以百度一哈~
到此,代码内容到此结束!
4. 启动工程:
直接点击右上角三角形符号运行SwaggerApplication即可
5. 验证Swagger和SpringBoot是否整合成功:
打开浏览器输入:http://localhost:8080/swagger-ui.html,即可看到:
点击“获取用户信息”,如下图
点击“Models”,如下图:
点击进“获取用户信息”下对应的方法,即可测试!
github地址:https://github.com/Gahui-Liao/swagger.git