反射获取entity 的值_Java反射+注解实现Entity类与Dto类相互转换

本文介绍了一种使用自定义注解和反射来实现Java中Entity类和Dto类之间的相互转换方法,避免了繁琐的getter和setter操作。通过定义注解并创建工具类,实现了转换的灵活性和效率提升。
摘要由CSDN通过智能技术生成

作者:Mr_Precious

链接:https://www.cnblogs.com/scale-lai/p/10164634.html

序言

近期在工作中管理代码时发现,在项目中从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 非常关键@Documentedpublic @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 Relat
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在软件开发,数据传输对象(DTO)和实体对象(Entity)通常具有不同的属性和用途,因此在应用程序进行它们之间的转换是很常见的。 一种常用的转换方法是手动编写转换代码,但这种方法可能会导致大量重复的代码和繁琐的工作。另一种方法是使用自动化转换工具,例如MapStruct、ModelMapper等,这些工具可以生成转换代码,从而减少了手动编写的工作量。 下面是一个使用MapStruct进行DTOEntity转换的示例: 首先,在pom.xml文件添加MapStruct依赖: ``` <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct</artifactId> <version>1.4.2.Final</version> </dependency> ``` 然后,定义DTOEntity: ``` public class UserDTO { private Long id; private String username; private String email; // getter和setter方法 } public class UserEntity { private Long id; private String username; private String email; // getter和setter方法 } ``` 接下来,创建转换器接口并使用@Mapper注解标记它: ``` @Mapper public interface UserMapper { UserMapper INSTANCE = Mappers.getMapper(UserMapper.class); UserDTO toDto(UserEntity entity); UserEntity toEntity(UserDTO dto); } ``` 最后,在应用程序使用转换器进行DTOEntity之间的转换: ``` UserDTO dto = UserMapper.INSTANCE.toDto(entity); UserEntity entity = UserMapper.INSTANCE.toEntity(dto); ``` 使用MapStruct可以简化DTOEntity之间的转换,提高开发效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值