1 pom.xml中配置引入依赖

<!--引入swagger-->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

2 创建配置类Swagger2Config

通过api函数创建Docket的Bean之后,apiInfo()用来创建该Api的基本信息

/**
* Swagger2配置类
* 在与spring boot集成时,放在与Application.java同级的目录下。
* 通过@Configuration注解,让Spring来加载该类配置。
* 再通过@EnableSwagger2注解来启用Swagger2。
*/
@EnableSwagger2
@Configuration
public class Swagger2Config {
    @Bean
    public Docket api() {
    	/** SWAGGER_2版本  	*/
        return new Docket(DocumentationType.SWAGGER_2) 
                .apiInfo(apiInfo())
                /** 选择那些路径和api会生成document  	*/
                .select()
                /** com.example.springstudy.controller 此包下的所有api 	*/
                .apis(RequestHandlerSelectors.basePackage("com.example.springstudy.controller"))
                /** 对所有路径进行监控  	*/
                .paths(PathSelectors.any()) 
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("API说明")
                .description("描述")
                .termsOfServiceUrl("http://localhost:8080/api/")
                .version("1.0")
                .build();
    }
}

3.对接口和实体类添加注解,生成doc

注解 说明
@Api 使用在Controller层Api类上(描述类),主要属性有tags(标签)、hidden(是否隐藏)、value、authorizations等,用于说明类的作用
@ApiOperation 给Controller层api增加方法说明(描述接口或方法),主要属性有value(方法描述)、notes(提示内容)、hidden(是否隐藏)、
httpMethod、ignoreJsonView、response、responseHeaders等等,某些属性注解可自动识别,无需配置。
@ApiParam 用于描述单个参数。
@ApiImplicitParams 对Controller层的方法参数进行说明(一个请求参数),包含多个 @ApiImplicitParam,只有一个属性value
@ApiImplicitParam 对Controller层的方法参数进行说明(多个请求参数),主要属性有name(参数名称)、value(参数说明)、required(是否必需)、
example–举例说明、dataType(数据类型)、paramType(参数类型)、dataTypeClass、defaultValue、readOnly等
@ApiModel 用在实体类上,用对象接收参数。主要属性有description(描述)、parent(父类)、subTypes、value、discriminator等
@ApiModelProperty 用在实体类属性上(用对象接收参数时,描述对象的一个字段),主要属性有access、accessMode、allowableValues、allowEmptyValue(是否允许为空)、
dataType(数据类型)、example(示例)、hidden(是否隐藏)、name(名称)、notes、required(是否必需)、value(说明)等。

4在浏览器中输入 http://localhost:8080/swagger-ui.html


在接口上追加swagger注解
entity

package com.example.demo.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.*;

import java.util.Date;
@Getter
@Data
public class User {
    @TableId(type=IdType.AUTO)
    private Long id;
    private String name;
    private int age;
    private String email;
    //自段添加填充
    @TableField(fill= FieldFill.INSERT)
    private Date createTime;
    @TableField(fill=FieldFill.INSERT_UPDATE)
    private Date updateTime;
    @Version //乐观锁version注解
    private int version;
    @TableLogic
    private int deleted;
}

mapper接口

package com.example.demo.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.List;

//在对应的mapper上面继承基本的类BaseMapper
//代表持久层
@Repository
public interface UserMapper extends BaseMapper<User> {
    public List<User> selectUser(Long id);
}

mapper的xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.UserMapper">
    <select id="selectUser" resultType="com.example.demo.entity.User">
        select * from user where id =#{id}
    </select>
</mapper>

service接口层

package com.example.demo.service.impl;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.demo.entity.User;

import java.util.List;

public interface UserServiceImpl extends IService<User> {
     List<User> selectUser(Long id);
}

service实现层

package com.example.demo.service;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import com.example.demo.service.impl.UserServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
public class UserService extends ServiceImpl<UserMapper,User> implements UserServiceImpl {
    @Autowired
    private UserMapper userMapper;

    @Override
    public List<User> selectUser(Long id){
        User user = userMapper.selectById(id);
        List<User> list = new ArrayList<>();
        list.add(user);
        return list;
    }
}

controller层

package com.example.demo.controller;

import com.example.demo.entity.User;
import com.example.demo.service.UserService;
import com.example.demo.service.impl.UserServiceImpl;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;

@RestController
@AllArgsConstructor
@Api(value = "用户管理",tags = "用户管理")
@RequestMapping("/api")
public class controller {
    @Resource
    UserService userService;
    @ApiOperation(value="用户查询",notes = "用户查询")
    @GetMapping("/user")
    public List<User> selectUser(){
        return userService.selectUser(1366738104190881793L);
    }
}

posted on 2021-04-12 22:01  飞飞乐园  阅读(343)  评论(0编辑  收藏  举报