swagger 页面不显示实体类字段属性及查询结果集回显字段名称不符合驼峰规则的问题
往下看~
数据库字段:
实体类配置:
@ApiModel(value = "医生认证")
@Data
@TableName("doc_qualification")
public class DocQualificationEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@ApiModelProperty(value = "主键")
@TableId(type = IdType.AUTO)
private Long oid;
/**
* *医生id
*/
@ApiModelProperty(value = "*医生id")
@NotNull(message = "*医生id 不能为空", groups = {AddGroup.class, UpdateGroup.class})
private Long doctorId;
/**
* *认证图片:图一,图二,图三
*/
@ApiModelProperty(value = "*认证图片:图一,图二,图三")
@NotNull(message = "*认证图片:图一,图二,图三 不能为空", groups = {AddGroup.class, UpdateGroup.class})
private String dqPics;
/**
* *状态码
*/
@ApiModelProperty(value = "*状态码")
@NotNull(message = "*状态码 不能为空", groups = {AddGroup.class, UpdateGroup.class})
private Integer tStatus;
/**
* 乐观锁
*/
@ApiModelProperty(value = "乐观锁")
private Integer revision;
/**
* 创建人
*/
@ApiModelProperty(value = "创建人", hidden = true)
@TableField(fill = FieldFill.INSERT)
private Long createdBy;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间", example = "2018-10-01 12:18:48", hidden = true)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField(fill = FieldFill.INSERT)
private Date createdTime;
/**
* 更新人
*/
@ApiModelProperty(value = "更新人", hidden = true)
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long updatedBy;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间", example = "2018-10-01 12:18:48", hidden = true)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updatedTime;
}
@ApiModelProperty(value = "创建人", hidden = true)
hidden属性控制页面是否显示,true 隐藏,false 显示。
swagger页面:
1.控制类方式一:
/**
* 保存
*/
@ApiOperation(value = "保存", httpMethod = "POST")
@RequestMapping("/save")
public R save(@RequestBody DocQualificationEntity hDocQualification) {
hDocQualification.setTStatus(0);
ValidatorUtils.validateEntity(hDocQualification, AddGroup.class);
docQualificationService.save(hDocQualification);
return R.ok();
}
控制类使用 @RequestBody 注解时,显示的参数 其中 tstatus 没有驼峰显示。
查询结果集的字段 tstatus 也没有驼峰命名,导致回显字段不一致。
解决方案:
新建配置类
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
/**
* 配置返回对象信息,字段名没有按照驼峰规则显示
* @param converters
*/
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
FastJsonHttpMessageConverter fastJsonConverter = new FastJsonHttpMessageConverter();
FastJsonConfig config = new FastJsonConfig();
config.setCharset(Charset.forName("UTF-8"));
config.setDateFormat("yyyy-MM-dd HH:mm:ss");
//设置允许返回为null的属性
config.setSerializerFeatures(SerializerFeature.WriteMapNullValue);
fastJsonConverter.setFastJsonConfig(config);
List<MediaType> list = new ArrayList<>();
list.add(MediaType.APPLICATION_JSON_UTF8);
fastJsonConverter.setSupportedMediaTypes(list);
converters.add(fastJsonConverter);
}
}
配置类新建后,结果集返回的数据会变成驼峰命名。
但新的问题是,运行后访问http://localhost:8080/swagger-ui.html#/
发现 swagger 访问不了了,浏览器报 404
后台报:No mapping for GET /swagger-ui.html
解决方案:
在配置类中新增配置即可
/**
* 配置 避免 swagger 页面访问不到,后台报:No mapping for GET /swagger-ui.html
* @param registry
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations(
"classpath:/static/");
registry.addResourceHandler("swagger-ui.html").addResourceLocations(
"classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations(
"classpath:/META-INF/resources/webjars/");
WebMvcConfigurer.super.addResourceHandlers(registry);
}
2.控制类方式二:
@ApiOperation(value = "保存", httpMethod = "POST")
@RequestMapping("/save")
public R save(DocQualificationEntity hDocQualification) {
hDocQualification.setTStatus(0);
ValidatorUtils.validateEntity(hDocQualification, AddGroup.class);
docQualificationService.save(hDocQualification);
return R.ok();
}
控制类不使用 @RequestBody 注解时,不显示 tStatus 字段,
解决方案:
因为不符合驼峰命名规则,应避免开头为一个字母,至少两个及以上。
评论前必须登录!
注册