javabean和Map互相转换

介绍

javabean和map类似,都有属性 和 值 的概念,可以互相转换

jar

普通工程,需要用到:commons-beanutils-1.9.3.jar

maven依赖

maven工程添加依赖如下:

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

准备javabean

注意: 该类必须由public修饰,否则无法正确转换

public class Book{

    private String name;
    private String author;


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }
}

BeanUtils 实现 javabean 转 map

注意:转换后map中的value都是 String 类型

Book book=new Book();
book.setName("java从入门到放弃");
book.setAuthor("匿名");

Map<String,String> map=null;
try {
    map= BeanUtils.describe(book);
} catch (IllegalAccessException e) {
    e.printStackTrace();
} catch (InvocationTargetException e) {
    e.printStackTrace();
} catch (NoSuchMethodException e) {
    e.printStackTrace();
}
if(map!=null) {
    for (Map.Entry<String,String> en : map.entrySet()) {
        System.out.println(en.getKey() + "---" + en.getValue());
    }
}

执行结果:

author---匿名
name---java从入门到放弃
class---class top.malaoshi.test.Book

PropertyUtils 实现 javabean 转 map

转换后map中的value是 原类型

Book book=new Book();
book.setName("java从入门到放弃");
book.setAuthor("匿名");

Map map=PropertyUtils.describe(book);

Map转javabean

注意:map中的key与javabean中的属性名必须一致

Map map=new HashMap();
map.put("name","java从入门到入坑");
map.put("author","匿名");

Book book=new Book();
try {
    BeanUtils.populate(book,map);
    System.out.println("name:"+book.getName());
    System.out.println("author:"+book.getAuthor());
} catch (IllegalAccessException e) {
    e.printStackTrace();
} catch (InvocationTargetException e) {
    e.printStackTrace();
}

执行结果:

name:java从入门到入坑
author:匿名