Spring+MyBatisPlus+Swagger2常用部署配置及注意事项


Spring+MyBatisPlus+Swagger2常用部署配置及注意事项

常用工具

MyBatis-plus

<!--mybatis-plus-->
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>

MySQL Connector

<!-- MySQLConnector -->
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
</dependency>

Lombok

自动实现实体类的一些常用方法

<!-- Lombok -->
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <scope>provided</scope>
</dependency>

Swagger2及其UI

比较好用的接口测试工具与网站API文档

<!-- Swagger2 -->
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
</dependency>
<!-- Swagger2 UI -->
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
</dependency>
<!-- 一套非官方的,更好看的UI -->
<!-- https://search.maven.org/search?q=g:com.github.caspar-chen%20AND%20a:swagger-ui-layer -->
<dependency>
	<groupId>com.github.caspar-chen</groupId>
    <artifactId>swagger-ui-layer</artifactId>
</dependency>

JWT

JavaWebToken,token工具

<!-- JsonWebToken -->
<!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt -->
<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt</artifactId>
</dependency>

FastJSON

<!-- https://github.com/alibaba/fastjson/#maven -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
</dependency>

常用配置

application.properties

基本设置

# 服务端口
server.port=2333
# 服务名
spring.application.name=demo

# 环境设置:dev、test、prod
spring.profiles.active=dev

数据库连接

#MySQL数据库连接
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/?serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=

JSON全局时间格式

#返回json的全局时间格式
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8

mapper xml文件路径

#配置mapper xml文件的路径
mybatis-plus.mapper-locations=classpath:xyz/cambria/demo/mapper/xml/*.xml

MyBaits日志输出

#mybatis日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

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="xyz.cambria.demo.mapper.UserMapper">

</mapper>

几种类的使用注意事项

Entity

注解@Data

添加注解后可自动生成构造方法,Getter()Setter()toString()equal()hashcode()等常用方法

Mapper

注解@Mapper

添加了@Mapper注解之后这个接口在编译时会生成相应的实现类

需要注意的是这个接口中不可以定义同名的方法,因为会生成相同的id,也就是说这个接口是不支持重载的

继承BaseMapper<T>

无需mapper.xml即可获得基本的CRUD功能。

Service

interface

继承IService<T>

该接口定义了基本的调用Mapper的CRUD功能

implements

继承ServiceImpl<M extends BaseMapper<T>,<T>>

该类实现了IService<T>

注解`@Service

Controller

注解@RestController

该注解主要包含了@Controller@ResponseBody注解

Swagger

常用注解

@Api:修饰整个类,描述Controller的作用
@ApiOperation:描述一个类的一个方法,或者说一个接口
@ApiParam:单个参数描述
@ApiModel:用对象来接收参数
@ApiModelProperty:用对象接收参数时,描述对象的一个字段
@ApiImplicitParam:一个请求参数
@ApiImplicitParams:多个请求参数

Swagger配置类

Swagger需配置后使用,其配置方法一般如下:

/**
 * Swagger2配置信息
 */
@Configuration
@EnableSwagger2
public class Swagger2Config {
    @Bean
    public Docket webApiConfig(){
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("webApi")
                .apiInfo(webApiInfo())
                .select()
                //只显示api路径下的页面
                .paths(Predicates.and(PathSelectors.regex("/api/.*")))
                .build();
    }

    @Bean
    public Docket adminApiConfig(){
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("adminApi")
                .apiInfo(adminApiInfo())
                .select()
                //只显示admin路径下的页面
                .paths(Predicates.and(PathSelectors.regex("/admin/.*")))
                .build();
    }

    private ApiInfo webApiInfo(){
        return new ApiInfoBuilder()
                .title("网站-API文档")
                .description("本文档描述了网站接口定义")
                .version("1.0")
                .contact(new Contact("name", "web", "email"))
                .build();
    }

    private ApiInfo adminApiInfo(){
        return new ApiInfoBuilder()
                .title("后台管理系统-API文档")
                .description("本文档描述了后台管理系统接口定义")
                .version("1.0")
                .contact(new Contact("name", "web", "email"))
                .build();
    }
}

使用

启动项目后访问项目根地址/Docket.path即可


文章作者: Cambria
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Cambria !
评论
  目录