java bean 对象属性复制框架BeanMapping-01-入门案例

项目简介

Bean-Mapping 用于 java 对象属性赋值。

项目中经常需要将一个对象的属性,赋值到另一个对象中。

常见的工具有很多,但都多少不够简洁,要么不够强大。

特性

  • 支持对象属性的浅拷贝

变更日志

变更日志

快速开始

准备

JDK1.8 及其以上版本

Maven 3.X 及其以上版本

maven 项目依赖

<dependency>
    <groupId>com.github.houbb</groupId>
    <artifactId>bean-mapping-core</artifactId>
    <version>0.0.1</version>
</dependency>

核心类说明

BeanUtil

提供一个简单的静态方法 copyProperties。

/**
 * 复制属性
 * 将 source 中的赋值给 target 中名称相同,且可以赋值的类型中去。类似于 spring 的 BeanUtils。
 * @param source 原始对象
 * @param target 目标对象
 */
public static void copyProperties(final Object source, Object target)

测试代码参考

详情参见 bean-mapping-test 模块下的测试代码。

示例代码

对象的定义

  • BaseSource.java & BaseTarget.java

其中 BaseSource 对象和 BaseTarget 对象的属性是相同的。

public class BaseSource {

    /**
     * 名称
     */
    private String name;

    /**
     * 年龄
     */
    private int age;

    /**
     * 生日
     */
    private Date birthday;

    /**
     * 字符串列表
     */
    private List<String> stringList;

    //getter & setter
}

属性赋值测试案例

我们构建 BaseSource 的属性,然后调用

BeanUtil.copyProperties(baseSource, baseTarget);

类似于 spring BeanUtils 和 Apache BeanUtils,并验证结果符合我们的预期。

    /**
     * 基础测试
     */
    @Test
    public void baseTest() {
        BaseSource baseSource = buildBaseSource();
        BaseTarget baseTarget = new BaseTarget();
        BeanUtil.copyProperties(baseSource, baseTarget);

        // 断言赋值后的属性和原来相同
        Assertions.assertEquals(baseSource.getAge(), baseTarget.getAge());
        Assertions.assertEquals(baseSource.getName(), baseTarget.getName());
        Assertions.assertEquals(baseSource.getBirthday(), baseTarget.getBirthday());
        Assertions.assertEquals(baseSource.getStringList(), baseTarget.getStringList());
    }

    /**
     * 构建用户信息
     * @return 用户
     */
    private BaseSource buildBaseSource() {
        BaseSource baseSource = new BaseSource();
        baseSource.setAge(10);
        baseSource.setName("映射测试");
        baseSource.setBirthday(new Date());
        baseSource.setStringList(Arrays.asList("1", "2"));
        return baseSource;
    }

原文地址:https://blog.51cto.com/9250070/2353788

时间: 2024-10-18 18:31:07

java bean 对象属性复制框架BeanMapping-01-入门案例的相关文章

一个强大易用的java bean之间属性复制框架--Dozer介绍

Dozer is a Java Bean to Java Bean mapper that recursively copies data from one object to another. Typically, these Java Beans will be of different complex types. 更多内容见:http://dozer.sourceforge.net/documentation/about.html 两个简单示例: map --> bean假设由reque

如何快速通过json构建java bean对象

和第三方对接的时候,返回给我们的json时参数字段多是很常见的现象,所以我们手动去创建javabean肯定是要花费不少时间,可用通过json自动生成javabean的工具,这里简单的介绍一下Intellij IDEA 中的插件GsonFormat. 1.什么是GsonFormat 将json数据格式转换为java bean对象的as插件. 2.快捷键 Ctrl+ALT+S,或settings -->Plugins -->输入GsonFormat   install plugins 安装完成,重

对象属性复制几种方式

对象属性复制的三种方法: 1.Apache提供的BeanUtil.copyProperties和PropertyUtil.copyProperties两种方式 BeanUtils.copyProperties("转换后的类", "要转换的类"); PropertyUtils.copyProperties("转换后的类", "要转换的类"); 口诀:后付钱(后付前:后面的复制给前面) 2.spring提供的BeanUtil.co

spring mvc返回json字符串数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable

1.spring mvc返回json数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable 2. @RequestMapping(value = { "/actor_details" }, method = { RequestMethod.POST }) @ResponseBody public ResultObject actorDetails(@RequestBody ActorDetailsRequest req)

java使用反射比较两个bean对象属性值是否相等

import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; import org.apache.log4j.Logger; public class DomainEquals { /** * 日志操作类 */ private static Logger logger = Logger.getLogger(DomainEquals.c

java数组对象的复制

一.首先,区分数组间的赋值 1 import java.util.Arrays; 2 public class Array { 3 public static void main(String[] args) 4 { 5 int[] array = new int[]{0, 1, 2, 3}; 6 int[] arr = array; //书组赋值 7 System.out.println(Arrays.toString(array)); //输出array 8 System.out.print

合并两个java bean对象非空属性(泛型)

import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.PropertyDescriptor; class Beanutils{ //merge two bean by discovering differences public static <M> void merge(M target, M destination) throws Exception { BeanInfo beanInfo

Java中对象的复制

假如说你想复制一个简单变量.很简单: 1 int n = 5; 2 int m = n; 不仅仅是int类型,其它七种原始数据类型(boolean,char,byte,short,float,double.long)同样适用于该类情况.但是如果你复制的是一个对象,情况就有些复杂了. 假设说我是一个beginner,我会这样写: 1 class Student { 2 private int number; 3 4 public int getNumber() { 5 return number;

java获取对象属性类型、属性名称、属性值

因为项目需要用到,于是简单封装了一些常用的操作: [java] view plaincopy /** * 根据属性名获取属性值 * */ private Object getFieldValueByName(String fieldName, Object o) { try { String firstLetter = fieldName.substring(0, 1).toUpperCase(); String getter = "get" + firstLetter + field