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
即可