实体对象之间赋值——BeanUtils的使用

实体对象之间相互传值,如:VO对象的值赋给Entity对象,是代码中常用功能,如果通过get、set相互赋值,则很麻烦,借助工具类BeanUtils可以轻松地完成操作。

BeanUtils依赖包导入

BeanUtils 是 Apache commons组件的成员之一,主要用于简化JavaBean封装数据的操作。使用BeanUtils必须导入相应的jar包,BeanUtils的maven坐标为

<dependency>
    <groupId>commons-beanutils</groupId>
    <artifactId>commons-beanutils</artifactId>
    <version>1.9.4</version>
</dependency>

示例

将前端传来的学生排名信息(StudentVo对象)分别赋给学生对象(StudentEntity)和排名对象(RankingEntity),这三个类代码如下:

@Data
public class StudentVo {
    private String sno;
    private String sname;
    private Integer ranking;
    private String schoolTerm;

    public String toString(){
        return "studentVo对象的值  sno:"+getSno()+" sname:"+getSname()+" ranking:"+getRanking().toString()+" schoolTerm:"+getSchoolTerm();
    }
}

@Data
public class StudentEntity {
    private String sno;
    private String sname;
    private Integer sage;

    public String toString(){
        return "studentEntity对象的值 sno:"+getSno()+" sname:"+getSname()+" sage:"+getSage();
    }
}

@Data
public class RankingEntity {
    private String sno;
    private Integer ranking;
    private String schoolTerm;

    public String toString(){
        return "rankingEntity对象的值 学号:"+getSno()+" 名次:"+getRanking().toString()+" 学期:"+getSchoolTerm();
    }
}

将VO对象的值赋给实体对象,通过BeanUtils.copyProperties(目标,源),将源实体对象的数据赋给目标对象,只把属性名相同的数据赋值,目标中的属性如果在源中不存在,给null值,测试代码如下:

public class App 
{
    public static void main( String[] args ) throws InvocationTargetException, IllegalAccessException {
        StudentVo studentVo = new StudentVo();
        studentVo.setSno("1");
        studentVo.setRanking(20);
        studentVo.setSname("胡成");
        studentVo.setSchoolTerm("第三学期");

        System.out.println(studentVo.toString());
        StudentEntity studentEntity = new StudentEntity();

        BeanUtils.copyProperties(studentEntity,studentVo);
        System.out.println(studentEntity.toString());

        RankingEntity rankingEntity = new RankingEntity();
        BeanUtils.copyProperties(rankingEntity,studentVo);
        System.out.println(rankingEntity.toString());
    }
}

运行结果:
在这里插入图片描述
StudentVo 中不存在sage属性,获得studentEntity对象的sage的值为null

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在Spring Boot中,你可以使用BeanUtils类或ModelMapper库来实现实体对象到另一个动态对象赋值。 1. 使用BeanUtils类: 首先,确保你的实体类和目标动态对象类具有相同的字段名和类型。然后,可以使用以下代码将实体对象的属性值复制到目标动态对象: ```java import org.springframework.beans.BeanUtils; public class EntityToDynamicObjectConverter { public static void convert(Object sourceEntity, Object targetDynamicObject) { BeanUtils.copyProperties(sourceEntity, targetDynamicObject); } } ``` 在调用时,你可以传入源实体对象和目标动态对象进行赋值: ```java YourEntity sourceEntity = new YourEntity(); // 设置源实体对象的属性值 YourDynamicObject targetDynamicObject = new YourDynamicObject(); EntityToDynamicObjectConverter.convert(sourceEntity, targetDynamicObject); ``` 2. 使用ModelMapper库: 首先,确保你已经在项目中添加了ModelMapper的依赖。然后,你需要创建一个ModelMapper对象,并使用其map()方法将实体对象的属性值映射到目标动态对象: ```java import org.modelmapper.ModelMapper; public class EntityToDynamicObjectConverter { private static ModelMapper modelMapper = new ModelMapper(); public static void convert(Object sourceEntity, Object targetDynamicObject) { modelMapper.map(sourceEntity, targetDynamicObject); } } ``` 在调用时,你可以传入源实体对象和目标动态对象进行赋值: ```java YourEntity sourceEntity = new YourEntity(); // 设置源实体对象的属性值 YourDynamicObject targetDynamicObject = new YourDynamicObject(); EntityToDynamicObjectConverter.convert(sourceEntity, targetDynamicObject); ``` 以上是两种常用的方法,可以根据你的需求选择其中一种来实现实体对象到动态对象赋值

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值