SpringBoot整合Swagger、Mybatis详细笔记

1.工具及版本说明:

相关工具:IDEA 2019,Navicat

SpringBoot版本:2.1.7RELEASE

Swagger版本:2.9.2

Mybatis版本:1.3.0

MySQL版本:5.7

2.其他说明

本工程整合SpringBoot、Swagger、MySQL,详细阐述从新建工程到启动工程。

3.流程介绍

1.新建SpringBoot工程:

File->New->Project

SpringBoot整合Swagger、Mybatis详细笔记_第1张图片

->Spring Initializr->点击Next

SpringBoot整合Swagger、Mybatis详细笔记_第2张图片

输入Group:com.gahui,Artifact:swagger->点击Next

SpringBoot整合Swagger、Mybatis详细笔记_第3张图片

点击Web->勾选Spring Web Start->点击Next

SpringBoot整合Swagger、Mybatis详细笔记_第4张图片

->Finished

SpringBoot整合Swagger、Mybatis详细笔记_第5张图片

完成新建Spring工程!

2.新建数据表:

这里的话,你使用的数据库名没有限制,只需要到时在application.xml文件中改成对应的数据库名即可即可,这里我新建的数据表名为User,结构如下:

SpringBoot整合Swagger、Mybatis详细笔记_第6张图片

插入两条记录:

SpringBoot整合Swagger、Mybatis详细笔记_第7张图片

3.具体代码:

找到并且删除目录下的application.properties文件,同时在相同路径新建application.yml文件,最后的工程目录如下:

SpringBoot整合Swagger、Mybatis详细笔记_第8张图片

SpringBoot整合Swagger、Mybatis详细笔记_第9张图片

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,即可看到:

SpringBoot整合Swagger、Mybatis详细笔记_第10张图片

点击“获取用户信息”,如下图

SpringBoot整合Swagger、Mybatis详细笔记_第11张图片

点击“Models”,如下图:

SpringBoot整合Swagger、Mybatis详细笔记_第12张图片

点击进“获取用户信息”下对应的方法,即可测试!

github地址:https://github.com/Gahui-Liao/swagger.git

至此,完成任务!

你可能感兴趣的:(9257--Java,SpringBoot,Swagger)