java spring boot 常用注释

一、从URL路径映射到处理处理器的映射

注释:@RequestMapping适用于对象以及方法,该注释实现了url路径到处理器和处理器方法的映射,

@GetMapping 适用于对象以及方法,该注释实现了url路径到处理器和处理器方法的映射,当http的请求方法为get时响应,同理还有:@PostMapping、@PutMapping、@DeleteMapping等常用注释

二、从URL参数到restful 访问方法参数

1、@PathVariable 注释: 表示 将url路径中的某一部分映射为接口参数;

restful接口开发中常常需要将url中的路径参数映射为接口方法的参数,如下示例代码中:

@GetMapping("/commodity/{id}")
@ResponceBody
public Commodity getCommodityDetail(@PathVariable String id)
{
        return commodityServiceImpl.selectCommodity(id);
}

2、@RequestParam注释:表示将URL get请求中的参数映射为接口方法参数,该注释针对接口中的参数变量进行使用,注意如果http参数为空时,需要将@RequestParam的属性required设置为false,示例代码如下:

@GetMapping("query")
@ReponseBody
public User GetUsers(@RequestParam("userid") String userID,@RequestParam("born") String born,@RequestParam("old") int old)
{
        return getUsers(userID,born,old);
}

3、@RequestBody注释,将页面表单中提交的json数据转化为为接口方法的对象 参数,示例如下:

js代码如下:

function post()
{
var params = {
userName : userName,
note : note
};

$.post({
url :" ./insert",
//此处需要告知传递参数类型为JSON ,不能缺少
contentType:"application/json",
//将JSON 转化为字符串,传递
data:JSON.stringify(params)',
//成功后的方法
success : function (result) {
if (result == null I I result . id == null) {
alert ( ”插入失败” );
return ;
alert ( ”插入成功”);
}});
}

java代码如下: 

@PostMappin("/insert")
@ResponseBody
publibc User Insert(@RequestBody User user)
{
    userService.insert(user);
    return user;
}

三、在控制器中调用方法之前实现数据绑定和格式转换

注释@InitBinder表示初始化绑定,控制器中的方法若采用了@InitBinder进行注释,表示该方法是在调用控制器其它方法之前需要先执行调用的方法,该注释可以用来实现对接口方法进行格式转换和验证。

//=================验证类==========================
public class UserValidator implements Validator {
//该验证器只支持User 类验证
@Override
public boolean supports(Class<?> clazz ) {
    return clazz.equals(User.class ) ;
}

//验证逻辑
@Override
public void validate (Object target,Errors errors ) {
//对象为空
if ( target == null) {
//直接在参数处报销,这样就不能进入控制器的方法
errors. rejectValue ( "", null ,"用户不能为空" ),
return ;
}

//强制转换
User user = (User) target ;
//用户名非空串
if ( StringUtils.isEmpty (user.getUserName ())) {
    //增加错误,可以址入控制器方法
    errors rejectValue("userName", null ," 用户名不能为空");
        }
    }
}



//================控制器中初始化绑定=======================

@InitBinder
publiC void initBinder (WebDataBinder binder) 
{

    //绑定验证器
    binder.setValidator(new UserValidator()) ;
    //定义参数格式,参数不再使用注解@DateTimeFormat , boolean 参数表示是否允许为空
    binder.registerCustomEditor(Date.class),new CustomDateEditor (new SimpleDateFormat("yyyy-MM-dd"), false ));
}

接口方法示例如下:

@GetMapping ("/validator")
@ResponseBody
public Map<String, Object> validator(@Valid User user,Errors Errors , Date date) 
{
    Map<String, Object> map = new HashMap<> ();
    map.put ( "user" , user);
    map.put ("date" , date);
    //判断是否存在错误
    if (Errors.hasErrors ()) {
    //获取全部错误
    List<ObjectError> oes = Errors.getAllErrors();
    for (ObjectError oe : oes) 
    {
        //判定是否字段错误
        if (oe instanceof FieldError) (
        //字段错误
        FieldError fe = (FieldError) oe;
        map.put (fe.getField(), fe.getDefaultMessage ());
    } 
    else
    {
        //对象错误
        map.put (oe.getObjectName(),oe.getDefaultMessage()) ;
        return map;
    }
}

四、接口方法参数验证相关的注释

数据库进行表结构定义时,常常对字段内容是否为空,字段内容长度、格式类型有要求,在代码实现时,需要将数据表字段的验证规则映射为模型大的字段验证规则,若接口的方法参数为需要相应的模型类型,则在向接口方法传递参数时,也要求参数符合验证规则。

在模型定义时可用大的注释有:@NotNull,@Future,@DateFormat,@DecimalMax

public class ValadatorPojo
 {
//非空判断
@NotNull(message="id不能为空")
private  Long id ;

@Future(message =”需要一个将来日期刊)//只能是将来的日期
//@Past   //只能是过去的日期
@DateTimeFormat(pattern = "yyyy-MM - dd") //日期格式化转换
@NotNull //不能为空
private Date date ;

@NotNull //不能为空
@DecimalMin(value ="O.l")//最小值0.l 元
@DecimalMax(value =" 10000")//最大值10000 元
private Double doubleValue = null ;

@Min(value = 1, message ="最小值为1")//最小值为1
@Max(value = 8, message=" 最大值为88")//最大值为88
@NotNull //不能为空
private Integer integer ;

@Range(min = 1 , max =88, message = " 范围为1 至88 日")// 限定范围
private  Long range ;
}

java  服务端接口示例如下:

@RequestMapping (value = "/valid/validate")
@ResponseBody
public Map<String, Object> validate(@Valid @RequestBody ValidatorPojo vp, Errors errors) {
Map<String, Object> errMap= new HashMap<>() ;
//获取错误列表
List<ObjectError> oes = errors.getAllErrors() ;
for (Obj ectError oe : oes) {
String key = null ;
String msg = null;
//字段错误
if (oe instanceof FieldError ) 
{
    FieldError fe = (FieldError) oe ;
    key= fe.getField () ; //获取错误验证字段名
} 
else 
{
    //非字段错误
    key= oe.getObjectName();//获取验证对象名称
    //错误信息
    msg = oe.getDefaultMessage();
    errMap.put(key, msg) ;
    return errMap ;
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值