1.BeanUtils.populate

可以把一个map中的属性拷贝到实体javaBean,例子:

Student:

package com.cy.model;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; public class Student{
private String id;
private String name;
private String stuNo;
private String address; public Student(){ }
public Student(String id, String name, String stuNo, String address) {
this.id = id;
this.name = name;
this.stuNo = stuNo;
this.address = address;
} public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getStuNo() {
return stuNo;
} public void setStuNo(String stuNo) {
this.stuNo = stuNo;
} public String getAddress() {
return address;
} public void setAddress(String address) {
this.address = address;
} @Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
}
}
package com.cy.test;

import com.cy.model.Student;
import org.apache.commons.beanutils.BeanUtils;
import java.util.HashMap;
import java.util.Map; public class BeanUtilTest { public static void main(String[] args) throws Exception {
//1.BeanUtils.populate
Student s1 = new Student();
Map<String, String> map = new HashMap<String, String>();
map.put("id", "1");
map.put("name", "zhangsan");
BeanUtils.populate(s1, map);
System.out.println(s1);
}
}
Student[id=1,name=zhangsan,stuNo=<null>,address=<null>]

2.BeanUtils.copypropertis(Object dest, Object orig)

将源实体属性拷贝到目标dest属性中。

StudentVo:

package com.cy.vo;

import com.cy.model.Student;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; public class StudentVo {
private String name;
private String stuNo; public StudentVo(){ } public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getStuNo() {
return stuNo;
} public void setStuNo(String stuNo) {
this.stuNo = stuNo;
} @Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
}
}
package com.cy.test;

import com.cy.model.Student;
import com.cy.vo.StudentVo;
import org.apache.commons.beanutils.BeanUtils; import java.util.HashMap;
import java.util.Map; public class BeanUtilTest { public static void main(String[] args) throws Exception {
Student s = new Student();
s.setId("1");
s.setName("xiaoming");
s.setStuNo("001"); //2.BeanUtils.copypropertis
StudentVo sv = new StudentVo();
BeanUtils.copyProperties(sv, s);
System.out.println(sv);
}
}
StudentVo[name=xiaoming,stuNo=001]

3.但是如果两个类的属性名不一样,就不能复制属性了。如:

StudentDto:

package com.cy.dto;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; public class StudentDto {
private String student_id;
private String name;
private String stu_no;
private String address; public String getStudent_id() {
return student_id;
} public void setStudent_id(String student_id) {
this.student_id = student_id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getStu_no() {
return stu_no;
} public void setStu_no(String stu_no) {
this.stu_no = stu_no;
} public String getAddress() {
return address;
} public void setAddress(String address) {
this.address = address;
} @Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
}
}
package com.cy.test;

import com.cy.dto.StudentDto;
import com.cy.model.Student;
import com.cy.vo.StudentVo;
import org.apache.commons.beanutils.BeanUtils; import java.util.HashMap;
import java.util.Map; public class BeanUtilTest { public static void main(String[] args) throws Exception {
StudentDto st = new StudentDto();
st.setStudent_id("1");
st.setStu_no("001");
st.setName("xiaoming");
st.setAddress("beijing"); Student s = new Student();
BeanUtils.copyProperties(s, st);
System.out.println(s);
}
}
Student[id=<null>,name=xiaoming,stuNo=<null>,address=beijing]

4.属性类型不一样,也是可以转化成功的:

StudentDto:

package com.cy.dto;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; public class StudentDto {
private Integer id;
private String name;
private String stu_no;
private String address;
private Boolean good; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public Boolean getGood() {
return good;
} public void setGood(Boolean good) {
this.good = good;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getStu_no() {
return stu_no;
} public void setStu_no(String stu_no) {
this.stu_no = stu_no;
} public String getAddress() {
return address;
} public void setAddress(String address) {
this.address = address;
} @Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
}
}

Student:

package com.cy.model;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; public class Student{
private String id;
private String name;
private String stuNo;
private String address;
private String good; public Student(){ } public String getGood() {
return good;
} public void setGood(String good) {
this.good = good;
} public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getStuNo() {
return stuNo;
} public void setStuNo(String stuNo) {
this.stuNo = stuNo;
} public String getAddress() {
return address;
} public void setAddress(String address) {
this.address = address;
} @Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
}
}
package com.cy.test;

import com.cy.dto.StudentDto;
import com.cy.model.Student;
import com.cy.vo.StudentVo;
import org.apache.commons.beanutils.BeanUtils; import java.util.HashMap;
import java.util.Map; public class BeanUtilTest { public static void main(String[] args) throws Exception {
StudentDto st = new StudentDto();
st.setId(1);
st.setStu_no("001");
st.setName("xiaoming");
st.setAddress("beijing");
st.setGood(true); Student s = new Student();
BeanUtils.copyProperties(s, st);
System.out.println(s);
}
}
Student[id=1,name=xiaoming,stuNo=<null>,address=beijing,good=true]

BeanUtils使用的更多相关文章

  1. java jdbc的优化之BeanUtils组件

    1. BeanUtils组件 1.1 简介 程序中对javabean的操作很频繁, 所以apache提供了一套开源的api,方便对javabean的操作!即BeanUtils组件. BeanUtils ...

  2. BeanUtils.populate(obj, map);

    public static void populate(Object bean, Map<String, ? extends Object> properties) throws Ille ...

  3. Beanutils基本用法

    Beanutils用了魔术般的反射技术,实现了很多夸张有用的功能,都是C/C++时代不敢想的.无论谁的项目,始终一天都会用得上它.我算是后知后觉了,第一回看到它的时候居然错过. 1.属性的动态gett ...

  4. BeanUtils

    BeanUtils包的使用   BeanUtils工具包是由Apache公司所开发,主要是方便程序员对Bean类能够进行简便的操作. 在使用BeanUtils工具包之前我们需要的Jar包有以下几种: ...

  5. BeanUtils.copyProperties()方法和PropertyUtils.copyProperties()的区别

    首先两者来源于同一个包: import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.Prop ...

  6. Apache Commons BeanUtils

    http://commons.apache.org/proper/commons-beanutils/javadocs/v1.9.2/apidocs/org/apache/commons/beanut ...

  7. 利用BeanUtils在对象间复制属性

    commons-beanutils是jakarta commons子项目中的一个软件包,其主要目的是利用反射机制对JavaBean的属性进行处理.我们知道,一个JavaBean通常包含了大量的属性,很 ...

  8. BeanUtils.copyProperties() 用法

    BeanUtils提供对Java反射和自省API的包装.其主要目的是利用反射机制对JavaBean的属性进行处理.我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处 ...

  9. BeanUtils.populate的作用

    它是在org.apache.commons.beanutils.BeanUtils包中的一个方法. 方法的作用:将一些 key-value 的值(例如 hashmap)映射到 bean 中的属性.   ...

  10. 内省、JavaBean、PropertyDescriptor类、Introspector类、BeanUtils工具包、注解、Rentention、Target、注解的基本属性和高级属性

      本文转载自:http://blog.sina.com.cn/s/blog_5d65a16901011kom.html 关键字:内省.JavaBean.PropertyDescriptor类.Int ...

随机推荐

  1. 2019-04-19-day036-协程与进程池

    内容回顾 11:30 码云 :王老师检查作业+定期抽查 注册账号 考试的时间 threading.enumerate(),能够获取到当前正在运行的所有线程对象列表 守护线程 守护线程会等待所有的非守护 ...

  2. C语言---指针变量详解3

    指针可以指向一份普通类型的数据,例如 int.double.char 等,也可以指向一份指针类型的数据,例如 int *.double *.char * 等.如果一个指针指向的是另外一个指针,我们就称 ...

  3. pycharm安装pip报错的处理办法

    这几天在用pycharm的时候,发现安装软件的时候报 module 'pip' has no attribute 'main' ,后来综合网上的办法以及分析错误提示,原因是在于pycharm安装目录下 ...

  4. C# receive 接收的字符串 对比不相等的问题

    背景: 最近写了一个C/S架构的 C# Socket 通讯项目,服务端,客户端弄通了之后,客户端发送给服务端后,服务端回复一个字符串告诉客户端确认收到了.问题就在这. 问题: 一开始,我让服务端回复了 ...

  5. yii2下载

    我发现yii2下载贼困难,不过折腾了很久终于搞下来了. 一,设置镜像 安装composer ,   下载 composer.phar 添加中国镜像   composer config -g repo. ...

  6. ubuntu apt 安装 mpv

    安装 curl -s https://non-gnu.uvt.nl/debian/uvt_key.gpg | sudo apt-key add - sudo add-apt-repository &q ...

  7. s21day13 python笔记

    s21day13 python笔记 一.装饰器 目的:在不改变原函数内部代码的基础上,在函数执行之前和之后自动执行某个功能 应用场景:想要为函数扩展功能时,可以选择用装饰器 装饰器基本格式: def ...

  8. js 数字随机滚动(数字递增) 每日凌晨回到原点,重新计算

    html: <div class="textMon"> <!--<img src="./img/20180830160315.png" ...

  9. 关于使用deepin在linux下安装mysql出现Can't connect to local MySQL server through socket '/tmp/mysql/mysql.sock' (2)的解决方法

    根据目录/etc/mysql打开文件debain.cnf 此时文本里的内容为 # Automatically generated for Debian scripts. DO NOT TOUCH![c ...

  10. ubuntu 上安装node.js 的简单方法

    一.安装 1.$ sudo apt-get install nodejs 2.$ sudo apt-get install npm 二.升级     1.升级npm命令如下: $ sudo npm i ...