使用java反射和自定义注解比较编辑时新旧对象内属性值

一、需求:

编辑时,需要判断每一个字段是否有变化并记录。

       如果有变化,需要记录变化的字段信息:包括字段中文名称、字段的英文key、字段变更前的值、字段变更后的值。

       ps:字段有可能是枚举,即数据库存储的是英文code,前端显示的是code对应中文(一般枚举这种,接口交互使用英文code,数据库存储也是英文code)。此时变更前、后的值,需要把英文code和中文名称全部记录下来。

       即最终要记录的,是:字段的英文key、字段中文名称、字段变更前的数据库值、字段变更前的中文显示值、字段变更后的数据库值、字段变更后的中文显示值。

       

二、只使用反射的不足:

纯粹使用反射,只能拿到:字段的英文key、字段变更前的数据库值、字段变更后的数据库值。

缺失:字段中文名称、字段变更前的中文显示值、、字段变更后的中文显示值。

 

三、自定义注解+反射:

3-1、自定义注解:

在要比较的对象的属性上,添加自定义注解,注解可以标注每一个属性的对应中文名称、相应枚举情况

import java.lang.annotation.*;

/**
 * 自定义注解
 *   使用在属性上
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface AttributeDesc {

    //属性名称
    String notes() default "";

    //属性是否属于枚举类型,""不是,如果不为"",比如是"card-type",那说明,此是枚举类,并且对应的枚举的关键字是"card-type",只要从数据字典内,类型是"card-type"的一批数据里去匹配就好
    String enumCode() default "";
}

3-2、实体类内使用:

 字段的英文key为"stockholderCardType"的中文解释是"股东证件类型",是枚举,枚举对应的数据字典类型是"card-type",由"@AttributeDesc(notes = "股东证件类型", e

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值