【SpringBoot】常用注解
@Controller
标记在类上面,类就是一个Controller对象;只是定义了一个控制器类。
@RestController
写在Controller类之前,添加该注解即可返回JSON格式的数据;
@RestController = @Controller + @ResponseBody,
@ResponseBody
是将return的数据结构转换为JSON格式。
@RequestMapping("/url")
映射 Request 请求与处理器,是真正处理请求的处理器。
写在Controller类前或类方法前,表示该类或该方法映射的URL,当我们访问该URL时,就会自动调用相应的处理方法
@PostMapping
相当于@RequestMapping(method = ReuqestMethod.POST )
@GetMapping
相当于@RequestMapping(method = ReuqestMethod.GET )
@PathVariable(GET专用)
通常我们用URL Template样式映射,即url/{param}这种形式,我们可以获取到URL后的参数;
@RequestParam(POST、GET均可)
用于获取多个参数,以及application/x-www-form-urlencoded传来的JSON对象,在()中传入需要获取参数的参数名;
@RequestBody(POST专用)
用的最多的注解,该注解与@RequestParam作用类似,区别在于:
将①传来的多个参数用Map或Entity统一接收,而不用对每个参数分别写注解;
②application/json传来的Json字符串的处理;
@Autowired
是类型驱动的注入
@Resource
是名称驱动的注入 [参考](https://baijiahao.baidu.com/s?id=1722572804842285538&wfr=spider&for=pc)
一般用在类属性或者setter方法上声明属性需要自动装配
1.Resource注解中指定了bean的名称,则Spring会只按注解中的bame属性查找合适对象,然后进行装配.
2.Resource注解中没有指定bean名称,先按类属性的变量名查找,如果还是未找到,则按类型进行查找.
@Data
注在类上,提供类的get、set、equals、hashCode、toString等方法
@GridBase()
用来标注表格是否启动分页,是否启用导出功能,是否支持后端加载数据等功能
@Table()
声明此对象映射到数据库的数据表,通过它可以为实体指定表
```常用属性: name命名当前实体类对应的数据库中表名;
uniqueConstraints 用来批量命名唯一键 批量命名 ;
```
@Column()
用来标识实体类中属性与数据表中字段的对应关系
```常用属性: name 定义被标注字段在数据库表中所对应字段的名称;
unique 表示该字段是否为唯一标识
nullable 表示该字段是否可以为null值
table 表示当映射多个表时,指定表的表中的字段
```
@FormLayout()
表单布局样式
@Id() 和 @GeneratedValue()
@Id 标注用于声明一个实体类的属性映射为数据库的主键列
@GeneratedValue 用于标注主键的生成策略,通过strategy 属性指定底层数据库的主键生成策略:
```SqlServer对应identity,MySQL 对应 auto increment
–IDENTITY:采用数据库ID自增长的方式来自增主键字段,Oracle 不支持这种方式;
–AUTO: JPA自动选择合适的策略,是默认选项;
–SEQUENCE:通过序列产生主键,通过@SequenceGenerator 注解指定序列名,MySql不支持这种方式
–TABLE:通过表产生主键,框架借由表模拟序列产生主键,使用该策略可以使应用更易于数据库移植。
```
@GridColumn()
查询条件,默认为模糊查询,可以设置等于、大于、小于查询
@Excel()
导入导出功能来加快数据的操作, 在需要被导入导出的实体类属性添加
```常用属性: name 列名
width 列宽
isWrap 是否换行
needMerge 是否合并单元格式
```
@JsonFormat()
用来表示json序列化的一种格式或者类型,是一个时间格式化注解实现日期格式自动格式化 (出参)
```常用属性: pattern: 表示日期的格式
timezone: 默认是GMT,中国需要GMT+8
shape: 表示序列化后的一种类型,枚举
locale: 根据位置序列化的一种格式
```
@DateTimeFormat
格式化参数 (入参)
```常用属性: pattern: 表示日期的格式
```
@JSONField()
可以用在方法(method),属性(field)以及方法中的参数(parameter)上
```常用属性: @JSONField(ordinal =0) 序列化字段的顺序,默认是0
@JSONField(name = “”) 用于解决属性名和key不一致的情况
@JSONField(format = “yyyy-MM-dd HH:mm:ss”) 用在Date属性上,自动格式化日期
@JSONField(serialize = false) 是否要把这个字段序列化成JSON字符串,默认是true
@JSONField(deserialize = false) 字段是否需要进行反序列化,默认是true
```
@Transient
不做库表的orm 映射处理, 但在程序中仍然可以使用它.
`无get方法时使用`
@Param
为SQL语句中参数赋值而服务的,作用就是给参数命名
@Param注解基本类型的参数
~~~
mapper中的方法:
public User selectUser(@Param("userName") String name,@Param("password") String pwd);
映射到xml中的<select>标签
<select id="selectUser" resultMap="User">
select * from user where user_name = #{userName} and user_password=#{password}
</select>
~~~
@Param注解JavaBean对象
~~~ SQL语句通过@Param注解中的别名把对象中的属性取出来然后复制
mapper中的方法:
public List<User> getAllUser(@Param("user") User u);
映射到xml中的<select>标签
<select id="getAllUser" parameterType="com.vo.User" resultMap="userMapper">
select
from user t where 1=1
and t.user_name = #{user.userName}
and t.user_age = #{user.userAge}
</select>
~~~
@Transactional
是声明式事务管理 编程中使用的注解
实质是使用了 JDBC 的事务来进行事务控制的
@Builder
-------------------------------------------------------------------------------------
如果万事开头难 那请结局一定圆满 @ Phoenixy
-------------------------------------------------------------------------------------