Springboot常用注解

目录

@Builder 注解

@Data注解

@TableName注解

@TableId注解

@Excel注解(自定义的注解)

@TableField注解

@TableField(exist=false)

@ApiModelProperty()注解   

@Param()注解

@Service注解

@Override注解

@RestController注解

@RequestMapping注解

@Autowired注解

@PreAuthorize

@ApiImplicitParams注解

@GetMapping注解

@PostMapping注解

@PathVariable注解

@RequestBody注解

@RequestParam注解


@Builder 注解

为类生成相对略微复杂的构建器 API
它作用于类,将其变成建造者模式
可以以链的形式调用
初始化实例对象生成的对象是不可以变的,可以在创建对象的时候进行赋值
如果需要在原来的基础上修改可以加 set 方法,final 字段可以不需要初始化
它会生成一个全参的构造函数

@Builder
public class User {
    private final Integer code = 200;
    private String username;
    private String password;
}

// 编译后:
public class User {
    private String username;
    private String password;
    User(String username, String password) {
        this.username = username; this.password = password;
    }
    public static User.UserBuilder builder() {
        return new User.UserBuilder();
    }

    public static class UserBuilder {
        private String username;
        private String password;
        UserBuilder() {}

        public User.UserBuilder username(String username) {
            this.username = username;
            return this;
        }
        public User.UserBuilder password(String password) {
            this.password = password;
            return this;
        }
        public User build() {
            return new User(this.username, this.password);
        }
        public String toString() {
            return "User.UserBuilder(username=" + this.username + ", password=" + this.password + ")";
        }
    }
}

@Data注解

自动添加类中所有属性相关的 set 方法
自动添加类中所有属性相关的 get 方法
生成一个该类的构造方法,禁止无参构造
重写该类的toString()方法
重写该类的equals()和hashCode()方法

@Data
public class Test {

        private Long id;
        
        private String name;

        private LocalDateTime createTime;
        
}

相当于 

public class Test {

        private Long id;
        
        private String name;

        private LocalDateTime createTime;

        public Long getId() {
                return id;
        }

        public void setId(Long id) {
                this.id = id;
        }

        public String getName() {
                return name;
        }

        public void setName(String name) {
                this.name = name;
        }

        public LocalDateTime getCreateTime() {
                return createTime;
        }

        public void setCreateTime(LocalDateTime createTime) {
                this.createTime = createTime;
        }

        @Override
        public String toString() {
                return "Test{" +
                        "id=" + id +
                        ", name='" + name + '\'' +
                        ", createTime=" + createTime +
                        '}';
        }
}

@TableName注解

用来将指定的数据库表和 JavaBean 进行映射

@TableId注解

是专门用在主键上的注解,如果数据库中的主键字段名和实体中的属性名,不一样且不是驼峰之类的对应关系,
可以在实体中表示主键的属性上加@Tableid注解,并指定@Tableid注解的value属性值为表中主键的字段名既可以对应上。
“value”:设置数据库字段值
“type”:设置主键类型、如果数据库主键设置了自增建议使用“AUTO”

@Excel注解(自定义的注解)

Excel导入Excel表中数据与实体类之间关联

Excel导出可参考将Excel表中数据导入数据库_C'z x的博客-CSDN博客

@TableField注解

值    描述
value    字段值(驼峰命名方式,该值可无)
update    预处理 set 字段自定义注入
condition    预处理 WHERE 实体条件自定义运算规则
el    详看注释说明
exist    是否为数据库表字段( 默认 true 存在,false 不存在 )
strategy    字段验证 ( 默认 非 null 判断,查看 com.baomidou.mybatisplus.enums.FieldStrategy )
fill    字段填充标记 ( FieldFill, 配合自动填充使用 )

@TableField(exist=false)

注解加在bean属性上,表示当前属性不是数据库的字段

如图我的数据库没有createTimeBegin和createTimeEnd,但我们可以使用这两个字段


@ApiModelProperty()注解   

用于方法,字段; 表示对model属性的说明或者数据操作更改
value–字段说明
name–重写属性名字 ,
dataType–重写属性类型
required–是否必填
example–举例说明
hidden–隐藏

@Param()注解

表示给参数命名,名称就是括号中的内容。给参数命名,然后在映射文件中就能根据名称获取参数值了。

Test findById(@Param("id") Long id);
<select id="findById" resultType="tech.niua.admin.test.domain.Test">
        select * from t_test where id = #{id};
    </select>

当你使用了使用@Param注解来声明参数时,如果使用 #{} 或 ${} 的方式都可以,当你不使用@Param注解来声明参数时,必须使用使用 #{}方式。如果使用 ${} 的方式,会报错。

@Service注解

一般标注在service层的bean上,声明是service层

@Override注解

@Override是一个标识性注解
@Override这个注解只能注解方法,
@Override这个注解是给编译器参考的,和运行阶段无关 凡是java中的方法带有这个注解的,
编译器都会进行编译检查,如果这个方法不是重写父类的方法,编译器报错


@RestController注解

@RestController:相当于@Controller+@ResponseBody两个注解的结合,
返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController
这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面

只在类上加@Controller 没在方法加@ResponseBody会报错

在类上加入@RestController就不用在每个方法都加@ResponseBody了

@RequestMapping注解

这个注解会将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法上。
并且一个处理请求地址映射的注解,可用在类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

@Autowired注解

@Autowired可以标注在属性上、方法上和构造器上,来完成自动装配。默认是根据属性类型,spring自动将匹配到的属性值进行注入,
然后就可以使用这个属性对象的方法。

@PreAuthorize

在需要进行权限控制的 controller 方法上添加权限控制

@ApiImplicitParams注解

@ApiImplicitParams:用在请求的方法上,表示一组参数说明
@ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面
name:参数名
value:参数的汉字说明、解释
required:参数是否必须传
paramType:参数放在哪个地方
header --> 请求参数的获取: @RequestHeader
query --> 请求参数的获取: @RequestParam
path(用于restful接口)--> 请求参数的获取: @PathVariable
body(不常用)
form(不常用)
dataType:参数类型,默认String,其它值dataType= "Integer"
defaultValue:参数的默认值

@GetMapping注解

处理get请求,传统的RequestMapping来编写应该是@RequestMapping(value = “/get/{id}”, method = RequestMethod.GET)
新方法可以简写为:
@GetMapping("/get/{id}")

前端只有发生GET请求才能找到这个方法


@PostMapping注解

:处理post请求,传统的RequestMapping来编写应该是@RequestMapping(value = “/get/{id}”,method = RequestMethod.POST)
新方法可以简写为:
@PostMapping("/get/{id}")

前端只有发生POST请求才能找到这个方法


@PathVariable注解

是用来赋予请求url中的动态参数,即:将请求URL中的模板变量映射到接口方法的参数上

@RequestBody注解

主要用来接收前端传递给后端的json字符串中的数据的
如果前端使用GET方式提交,则不能使用@RequestBody注解,因为GET方式提交时它无请求体;所以需要用POST方式进行提交。
在后端的同一个接收方法里面,@RequestBody与@RequestParam() 可以同时使用,但@RequestBody只能有一个,而@RequestParam()可以有多个。

不加@RequestBody获取不到前台传的参数

@RequestParam注解

@RequestParam:将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)
语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)
value:参数名
required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。
defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值

  • 0
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页
评论 3

打赏作者

C'z x

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值