java反射+注解实现Entity类与Dto类相互转换

本文介绍了如何使用Java反射和自定义注解实现Entity类与Dto类之间的相互转换,避免繁琐的get-set操作。通过三步实现:自定义注解、工具类方法及实际使用。这种方法具有较好的扩展性,适用于不同需求的项目,有助于提升开发效率。
摘要由CSDN通过智能技术生成

序言

近期在工作中管理代码时发现,在项目中从Dao层到Service层数据传递中通过大量的get(),set()方法去一个一个的去拿值去赋值,导致代码篇幅过长,对此甚是讨厌,并且严重消耗开发时间。起初找过些关于这块的资料,现在大部分都是Entity类和Dto类的属性名相同的前提下,利用反射实现,太局限了,如果要改成同名,按目前项目的程度去整改工作量太大,不现实。后面看了Spring注解的实现,然后结合找到反射实现资料,突想奇发尝试着用自定义注解+反射方式的去实现,事实证明这方法是可行的。故分享至此,希望能帮到大家。
  
整体实现三步骤:1.自定义注解 2.工具类方法实现反射 3.使用(测试)

1.自定义注解

import java.lang.annotation.*;

@Target({ElementType.FIELD,ElementType.TYPE}) //Target 注解的使用域,FIELD表示使用在属性上面,TYPE表示使用在类上面
@Retention(RetentionPolicy.RUNTIME) //Retention 设置注解的生命周期 ,这里定义为RetentionPolicy.RUNTIME 非常关键
@Documented
public @interface RelMapper {
    //自定义属性
    String value() default ""; 
    String type() default "";  // value : status(标记属性值为Y/N的属性) / date(标记属性类型为时间) 
}

自定义属性,大家可以根据自己项目中的需求增加不同的属性。

2.工具类方法实现

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.sql.Timestamp;
import java.util.Date;
import org.apache.commons.lang.StringUtils;
import com.ctccbs.common.annotation.RelMapper;

public class RelationMapperUtils {
/**
     * Entity and Dto Mapper  
     * @param entry
     * @param dto
     * @param enToDto  
     *             ture  : Entity To Dto (defult)
     *             false : Dto To Entry
     *     Rule: 
     *         实现相互转换前提: Dto field name(dto和entry的field name相同并且 类上有@RelMappe
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值