创建透视表t500
建表
CREATE TABLE `t500` (
`id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=501 DEFAULT CHARSET=latin1;
插入500条数据
CREATE DEFINER=`json`@`%` PROCEDURE `i500`()
BEGIN
DECLARE a INT default 1;
while a<=500 do
insert into t500 (id) value(a);
set a=a+1;
end while;
end
2.1
select t500.id from t500 where t500.id <=DATEDIFF("2019-02-01","2019-01-01")+1
2.2
SELECT
DATE_ADD(
STR_TO_DATE( "2019-01-01", '%Y-%m-%d' ),
INTERVAL t500.id - 1 DAY
)
FROM
t500
WHERE
t500.id <= DATEDIFF( "2019-02-01", "2019-01-01" ) +1
2.3
SELECT
DATE_FORMAT(
DATE_ADD(
STR_TO_DATE( "2019-01-01", '%Y-%m-%d' ),
INTERVAL t500.id - 1 DAY
),
'%a'
)
FROM
t500
WHERE
t500.id <= DATEDIFF( "2019-02-01", "2019-01-01" ) +1
2.4
SELECT
CASE
WHEN
DATE_FORMAT(
DATE_ADD(
STR_TO_DATE( "2019-01-01", '%Y-%m-%d' ),
INTERVAL t500.id - 1 DAY
),
'%a'
) IN ( 'Sat', 'Sun' ) THEN
0 ELSE 1 end
FROM
t500
WHERE
t500.id <= DATEDIFF( "2019-02-01", "2019-01-01" ) +1
2.5 最终SQL
select sum(CASE
WHEN
DATE_FORMAT(
DATE_ADD(
STR_TO_DATE( "2019-01-01", '%Y-%m-%d' ),
INTERVAL t500.id - 1 DAY
),
'%a'
) IN ( 'Sat', 'Sun' ) THEN
0 ELSE 1 end ) as days from
t500
WHERE
t500.id <= DATEDIFF( "2019-02-01", "2019-01-01" ) +1
@SpringBootApplication
@ComponentScan(value =www.dfgjpt.com "indi.viyoung.viboot.*")
@MapperScan(value = "indi.viyoung.viboot.swagger2.mapper")
@EnableSwagger2
@EnableSwaggerBootstrapUI
public class ViBootSwaggerApplication {
public static void main(www.fengshen157.com String[www.mhylpt.com] args) {
SpringApplication.run(ViBootSwaggerApplication.class, args);
}
}
第四步:通过注解来完成API文档
1. @Api
注解名称 注解属性 作用域 属性作用
@Api tags 类 说明该类的作用
value 类 说明该类的作用
举个?:
@Api(value = "用户类控制器",tags="用户类控制器")
public class UserController {
...
}
在这里插入图片描述
2 . @ApiOperation
注解名称 注解属性 作用域 属性作用
@ApiOperation() value 方法 描述方法作用
notes 方法 提示内容
tags 方法 分组
举个?:
@ApiOperation(value = "获取用户列表",notes = "获取用户列表")
public List
...
}
3. @ApiParam
注解名称 注解属性 作用域 属性作用
@ApiParam() name 方法参数 参数名
value 方法参数 参数说明
required 方法参数 是否必填
举个?:
@ApiOperation(value="获取用户详细信息", notes="根据url的id来获取用户详细信息")
public User get(@ApiParam(name="id",value=www.mhylpt.com"用户id",required=true) Long id) {
log.info("GET..{}...方法执行。。。",id);
return userService.getById(id);
}
4. @ApiModel && @ApiModelProperty
注解名称 注解属性 作用域 属性作用
@ApiModel() value 类 对象名
description 类 描述
@ApiModelProperty() value 方法 字段说明
name 方法 属性名
dataType 方法 属性类型
required 方法 是否必填
example 方法 举例
hidden 方法 隐藏
举个?:
@ApiModel(value="user对象",description="用户对象user")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type =www.yongshi123.cn IdType.AUTO)
@ApiModelProperty(value = www.ycjszpgs.com"用户ID",example = "1000001",hidden=true)
private Long id;
@ApiModelProperty(www.michenggw.com value="用户名",required = true,dataType = "String")
private String userName;
@ApiModelProperty(value = "密码")
private String password;
}
5. @ApiImplicitParam && @ApiImplicitParams
`@ApiImplicitParam`可以单个用于方法至上,多个参数的话可以把`@ApiImplicitParam`放到`@ApiImplicitParams`中,这里只罗列`@ApiImplicitParam`的属性:
注解名称 注解属性 作用域 属性作用
@ApiImplicitParam() value 方法 参数说明
name 方法 参数名
dataType 方法 数据类型
paramType 方法 参数类型
example 方法 举例
举个?:
@ApiImplicitParams({
@ApiImplicitParam(name = "user",www.yongshiyule178.com value = "用户实体user", required = true, dataType = "User")
})
public void put(User user) {
userService.updateById(user);
log.info("PUT方法执行。。。");
}
这里需要注意一点,我们并没有在注解中写图中圈中的两个参数,这个是去读取了我们刚刚为User类的注解,并将用户名设置为必填!
6.@ApiResposne && @ApiResponses
@ApiResponses与@ApiResponse的关系和@ApiImplicitParam && @ApiImplicitParams 的关系和用法都是类似的
注解名称 注解属性 作用域 属性作用
@ApiResponse() response 方法 返回类
code 方法 返回码
message 方法 返回信息
examples 方法 例子
最后再聊聊这个UI
先贴几张spring-fox的ui(正是我们所熟知的那一套)
相信看到这里,大家心里对于这两套UI的选择应该都有个答案了,当然bootstrap风格的ui不仅好看,而且有各种强大的功能~
导出md文档
参数缓存
在这里插入图片描述
原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。