SpringBoot 实体类常用注解 (二)
👨🎓作者:Java 学术趴
💌公众号:Java 学术趴
🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。
🙏版权声明:文章里的部分文字或者图片来自于互联网以及百度百科,如有侵权请尽快联系小编。微信搜索公众号 Java 学术趴联系小编。
☠️每日毒鸡汤:堕落的一天
👋大家好!我是你们的老朋友Java学术趴。最近看了一下 SpringBoot2 的课程,发现好多的注解并不是很了解,只是简单的会用,但是真是发生的作用却不知道,最近花了一些时间把这些注解进行了一下整理,针对不同的层级进行了细致的划分,最近几天会依次给大家更新关于注解的内容,对大家有帮助的话点赞支持一下哦!
SpringBoot 穷启动类中常用的注解
使用 Spring 开发时,进行配置主要有两种方式,一是 xml 的方式,二是 java config 的方式。Spring 技术自身也在不断的发展和改变,从当前 Springboot 的火热程度来看,java config 的应用是越来越广泛了,在使用 java config 的过程当中,我们不可避免的会有各种各样的注解打交道,所有,注解在实际开发中的地位很高。
1. swagger 中的注解
1.1 @ApiModel
@ApiModel :在实体类上边使用,标记类时 swagger 的解析类。这样生成的 Swagger 的 Api 文档就会存在对该类的详细介绍。
记住两个常用的参数:value 以及 description
1.2 @ApiModelProperty
@ApiModelProperty : 使用在被 @ApiModel 注解的模型类的属性上。这样生成的 Swagger 的 Api 文档就会存在对这个属性的详细介绍。
记住几个常用的参数:value、name、dataType、required、example、hidden、readOnly、allowEmptyValue
2. jackson 中的注解
2.1 @JsonFormat
@JsonFormat :它是一个时间格式化注解,比如我们存储在 mysql 中的数据是 date 类型的,当我们读取出来封装在实体类中的时候,就会变成英文时间格式,而不是 yyyy-MM-dd HH:mm:ss 这样的中文时间,因此我们需要用到 JsonFormat 注解来格式化我们的时间。
当不使用这个注解仍然想让时间不解析为英文时间格式,那么就需要在 application.yml 中对 jackson 进行配置。
配置完之后就可以省略 @JsonFormat 注解了。
当然也可以使用 @JsonFormat(pattern = "yyyy-MM-dd ",timezone = "GMT+8") 来进行格式的覆盖。
2.2 @JsonIgnore
@JsonIgnore :此注解是类注解,作用是 json 序列化时将 java bean 中的一些属性忽略掉,序列化和反序列化都受影响。也就是在前后端进行数据交互的时候会忽略掉这个注解,不传递关于这个注解的任何参数值。
2.3 @Excel
2.4 @DateTimeFormat
@DateTimeFormat :有的时候由前台 jsp 页面填写一个日期,提交到后台 spring mvc 的时候,我们希望直接转换成一个 Date 类型,而不是由一个 string 类型接收,然后再通过 simpleDateFormat 来进行转格式,这样太麻烦了,代码会显的很乱,spring 为我们提供了类型转化器,写起来也是很麻烦,我们的需求很简单就是由框架帮我们去自动的转换类型而不是手动的转换,在这样的背景下,我们可以使用 @DateTimeFormat 注解。
@JsonFormat : 我们从数据库里面查询到了日期,然后我们想把这个日期自动的变成 string 类型,这时我们可以使用 @JsonFormat 注解。就是把 Date 类型的数据转换为 String 类型传递给前端。
@DateTimeFormat @JsonFormat 使用注意的地方:
注意这两个注解的注解位置
注意被注解的字段应该是 Date 类型
一般会用在 VO 中
@JsonFormat 不要忘了加 GMT+8
3. mybatisplus 中的注解
3.1 @TableName
@TableName : 在实体类上指定,指定实体类和数据库表的映射关系。重点:当实体类的类名在转成小写后和数据库表名相同时,可以不指定该注解。
3.2 @Tableld
@Tableld : 用于指定实体类的某个属性为对应的数据表中的主键。这个注解在实体类中只存在一个。
3.3 @TableField
@TableField : 解决实体类中属性名和表中的字段名不一致(非驼峰),还有对象中的某个属性不在表中进行忽略。
在开发中一般在 application.yml 对 MyBatis 进行实体类的驼峰与表中_对应的配置。此时会对实体类中的大写字母转为小写,并且在单词之间拼接 _ ,让其与数据库字段对应。
通过以下代码说明 @TableField 的几种用法
@TableField 完成字段自动填充的操作
实现方式:这个自动填充是添加到实体类中的某个属性之上,是对该属性在进行指定操作的时候完成自动填充
在进行插入操作时 :对添加了注解 @tablefield(fill = fieldfill.insert) 的字段进行自动填充。
对添加了注解 @tablefield(fill = fieldfill.insert_update) 的字段在进行插入和更新时进行自动填充。
这样我们在具体业务中对实体类进行赋值就可以不用对这些公共字段进行赋值,在执行插入或者更新时就能自动赋值并插入数据库。
重点:那么这些自动填充的数据从何而来????
在项目的 config 包下新建自动填充处理类使其实现接口 metaobjecthandler,并且重写其中的方法(这个配置类用于给定自动填充的数据),以下代码可以直接复制粘贴在项目中使用。
版权声明: 本文为 InfoQ 作者【Java学术趴】的原创文章。
原文链接:【http://xie.infoq.cn/article/f95c70637585cdd5674ba5d5a】。文章转载请联系作者。
评论