注解
注解
1.1· @Data
配合Lombok插件使用,作用于类上,简化java代码编写,为该类提供读写属性。相当于Getter,Setter,equals,hashCode,toString方法
例如:
package com.lmt.qianping.shop.domain; import lombok.Data; import java.io.Serializable; /** * @author Jensen * @Date 1/19/19 4:59 PM */ @Data public class CbdDto implements Serializable { private Integer id; private String area; private String cbd; }
参考:https://blog.csdn.net/cauchy6317/article/details/102579274
2.1· @Deprecated
若某类或某方法加上该注解之后,表示此方法或类不再建议使用,调用时也会出现删除线,但并不代表不能用,只是说,不推荐使用,因为还有更好的方法可以调用。
3.1· @Mapper
在接口类上添加了@Mapper,在编译之后会生成相应的接口实现类
添加位置:接口类上面。避免每个接口类上增加此注解,可以在主启动类上增加扫描@MapperScan注解
注:不使用@Repository注解,idea会报警告,提示找不到这个bean,直接忽略即可。
4.1· @PathVariable
通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过
1 @PathVariable("xxx") 绑定到操作方法的入参中。 2 3 @RequestMapping("/getUser/{name}") 4 5 public User getUser(@PathVariable String name){ 6 7 return userService.selectUser(name); 8 9 }
5.1· @requestBody
通常处理content-type不是默认的application/x-www-form-urlcoded编码的内容,一般情况是json数据。@RequestBody接收请求体中的json数据;不加注解接收URL中的数据并组装为对象:
1 @PostMapping("/goodsList") 2 public Response getGoodslist(@RequestBody ParamGoodsDetailCondition Condition) { 3 }
6.1· @RequestParam()
指定的参数可以是普通元素、数组、集合、对象等等。只不过RequestBody 接收的是请求体里面的数据;而RequestParam接收的是key-value里面的参数,所以它会被切面进行处理从而可以用普通元素、数组、集合、对象等接收)。
即:如果参数时放在请求体中,application/json传入后台的话,那么后台要用@RequestBody才能接收到;
如果不是放在请求体中的话,那么后台接收前台传过来的参数时,要用@RequestParam来接收,或则形参前 什么也不写也能接收。
7.1· @Valid
注解可以实现数据的验证,你可以定义实体,在实体的属性上添加校验规则,而在API接收数据时添加@valid关键字,这时你的实体将会开启一个校验的功能。
public String login(@Valid User user) {...}
8.1· Swagger注解
参考路径:http://c.biancheng.net/view/5533.html
- @API
作用于类,表示标识这个类是swagger的资源
tags="说明该类的作用,可以在UI界面上看到的注解"
value="该参数没什么意义,在UI界面上也看不到,所以不需要配置"
@Api(tags = "商品列表服务") public class GoodsDetailController {}
- @ApiOperation:
用在请求的方法上,说明方法的用途、作用
value="说明方法的用途、作用"
notes="方法的备注说明,用于提示内容"
@ApiOperation(value = "商品列表", notes = "商品列表详情页面接口") @PostMapping("/goodsList") public Response getGoodslist(@RequestBody ParamGoodsDetailCondition Condition) {}
- @ApiModel()
用于类 ,表示对类进行说明,用于参数用实体类接收
value -对象名
description–描述
- @ApiModelProperty()
用于方法,字段; 表示对model属性的说明或者数据操作更改
value–字段说明
name–重写属性名字
dataType–重写属性类型
required–是否必填
example–举例说明
hidden–隐藏
@ApiModel(value="user对象",description="用户对象user") public class User implements Serializable{ private static final long serialVersionUID = 1L; @ApiModelProperty(value="用户名",name="username",example="xingguo") private String username; @ApiModelProperty(value="状态",name="state",required=true) private Integer state; private String password; private String nickName; private Integer isDeleted; @ApiModelProperty(value="id数组",hidden=true) private String[] ids; private List<String> idList; //省略get/set }
- @ApiParam
用于 Controller 中方法的参数说明。使用方式代码如下所示。
- value:参数说明
- required:是否必填
@ApiOperation("新建(普通/组合)商品") @PostMapping("/addGeneralGoods") public Response addGeneralGoods(@Valid @RequestBody @ApiParam(value = "新建(普通/组合)商品参数", required = true) GoodsDetailsVO goodsDetailsVO) throws GoodsManageException { if(goodsDetailsVO==null ){ return Response.failed(GoodsResultCode.GOODS_ADD_DATA_ISEMPTY); } goodsDetailService.insertGoods(goodsDetailsVO); return Response.success("ok"); }
- ApiImplicitParam 和 ApiImplicitParams
用于方法上,为单独的请求参数进行说明。使用方式代码如下所示。
- name:参数名,对应方法中单独的参数名称。
- value:参数中文说明。
- required:是否必填。
- paramType:参数类型,取值为 path、query、body、header、form。
- dataType:参数数据类型。
- defaultValue:默认值。
@ApiOperation(value = "批量删除") @ApiImplicitParam(name = "delGoodsBatchById", value = "批量删除商品", required = true, dataType = "GoodsDetails", paramType = "body") @DeleteMapping("/delGoodsBatchById") public Response delGoodsBatchById(@RequestBody @Valid List<GoodsDetails> goodsDetaislList) { if (goodsDetaislList == null || goodsDetaislList.isEmpty()) { return Response.failed(GoodsResultCode.GOODS_DEL_CONTENT_IS_EMPTY); } goodsDetailService.delGoodsInfo(goodsDetaislList); return Response.success("ok"); }