自定义注解加反射实现数据类型转换

概述

通过ORM框架从数据库中查询出的实体对象,大部分情况下可能与前端页面展示的数据结果类型略有不同,比如:后端定义的店铺实体类(Shop)中有店铺状态:0-正常,1-未审核,2-违规,3-倒闭,在做脱敏的处理下需要转换成一个VO,其中店铺状态需要后台转换,因此可以通过自定义注解+反射的方式处理。

准备工作:

1、自定义注解

1.1 ConvertEnumField.java

@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface ConvertEnumField {

    /** 枚举类.class */
    Class<?> enumClass();

    /** 实体类的字段名 */
    String sourceFieldName() default "";

}

1.2 ConvertDateField.java

@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface ConvertDateField {

    /** 实体类的字段名 */
    String sourceFieldName() default "";

    /**
     * 日期的格式,例如:
     *
     * yyyy-MM-dd
     *
     * yyyy-MM-dd HH:mm:ss
     *
     * @return
     */
    String pattern() default "";

}

2、枚举:ShopStatusEnum.java

public enum ShopStatusEnum {

    /** 铺状态:0-正常,1-未审核,2-违规,3-倒闭 */

    NORMAL(0, "正常"),

    UNAUDITED(1, "未审核"),

    GET_OUT_OF_LINE(2, "违规"),

    CLOSE_DOWN(3, "倒闭");

    /** 状态码 **/
    private Integer code ;

    /** 消息 **/
    private String message ;

    ShopStatusEnum(Integer code, String message) {
        this.code = code ;
        this.message = message ;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值