
commons-beanutils是**Apache开源组织提供的用于操作JAVA BEAN的工具包**。使用commons-beanutils,我们**可以很方便的对bean对象的属性进行操作
导入maven
<dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>1.9.3</version></dependency>
编写一个用于测试的BEAN类:
public class UserInfo{ private String userId; private String userName; public UserInfo() { } public UserInfo(String userId, String userName) { this.userId = userId; this.userName = userName; } public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } @Override public String toString() { return String.format("{userId:%s,userName:%s}", userId, userName); }}
MethodUtils
(1) . MethodUtils主要作用
通过反射访问对象的方法并且执行方法。
(2) . MethodUtils常用方法摘要
| 返回值 |
方法名 |
说明 |
| static int |
clearCache() |
清空方法缓存 |
| static Method |
getAccessibleMethod(Class<?> clazz, Method method) |
返回一个可访问的方法 |
| static Method |
getAccessibleMethod(Class<?> clazz, String methodName, Class<?> parameterType) |
返回一个可访问的方法 |
| static Object |
invokeExactMethod(Object object, String methodName, Object arg) |
执行方法 |
(3) . 使用示例
public class MethodUtilsTest
{
@Test
public void test() throws Exception
{
UserInfo userInfo = new UserInfo();
// 通过方法名和参数类型获得可访问方法
Method method = MethodUtils.getAccessibleMethod(UserInfo.class,
"setUserId", String.class);
method.invoke(userInfo, "wzy");
// 可以直接通过invokeMethod执行方法
MethodUtils.invokeMethod(userInfo, "setUserName", "王振宇");
System.out.println(userInfo);
}
}
(4) . 运行结果
{userId:wzy,userName:王振宇}
ConstructorUtils
(1) . ConstructorUtils主要作用
通过反射提供了构造方法相关的便捷操作方法
(2) . ConstructorUtils常用方法摘要
| 返回值 |
方法名 |
说明 |
| static Constructor |
getAccessibleConstructor(Class klass, Class<?> parameterType) |
获得含有一个形参的构造方法 |
| static Constructor |
getAccessibleConstructor(Class klass, Class<?>[] parameterTypes) |
获得含有指定类型形参的构造方法 |
| static T |
invokeConstructor(Class klass, Object arg) |
执行构造方法 |
| static T |
invokeConstructor(Class klass, Object[] args, Class<?>[] parameterTypes) |
执行构造方法 |
(3) . 使用示例
public class ConstructorUtilsTest
{
@Test
public void test() throws Exception
{
Constructor<UserInfo> constructor = ConstructorUtils
.getAccessibleConstructor(UserInfo.class, new Class[] {
String.class, String.class });
System.out.println(constructor.newInstance("wzy", "王振宇"));
// 更简洁的写法
UserInfo userInfo = ConstructorUtils.invokeConstructor(UserInfo.class,
new String[] { "wzy", "=王振宇" });
System.out.println(userInfo);
}
}
(4) . 运行结果
{userId:wzy,userName:王振宇}
{userId:wzy,userName:王振宇}
PropertyUtils
(1) . PropertyUtils主要作用
通过反射提供了对象属性的便捷操作方法。
(2) . PropertyUtils常用方法摘要
| 返回值 |
方法名 |
说明 |
| static void |
copyProperties(Object dest, Object orig) |
复制属性 |
| static Map |
describe(Object bean) |
属性描述 |
| static Object |
getProperty(Object bean, String name) |
获得属性 |
| static void |
setProperty(Object bean, String name, Object value) |
设置属性值 |
(3) . 使用示例
public class PropertyUtilsTest
{
@Test
public void test() throws Exception
{
UserInfo userInfo = new UserInfo("wzy", "王振宇");
UserInfo copyed = new UserInfo();
PropertyUtils.copyProperties(copyed, userInfo);
System.out.println(copyed);
System.out.println(PropertyUtils.describe(userInfo));
PropertyUtils.setProperty(userInfo, "userId", "wangzhenyu");
System.out.println(userInfo);
}
(4) . 运行结果
{userId:wzy,userName:王振宇}
{userId=wzy, class=class com.gujin.entity.UserInfo, userName=王振宇}
{userId:wangzhenyu,userName:王振宇}
BeanUtils
(1) . BeanUtils主要作用
通过反射提供了Bean对象的便捷操作方法,[**org.springframework.beans.BeanUtils区别要主要—-[区别](https://blog.csdn.net/tjbsl/article/details/49246113)自行百度**]
(2) . BeanUtils常用方法摘要
| 返回值 |
方法名 |
说明 |
| static Object |
cloneBean(Object bean) |
克隆对象 |
| static void |
copyProperties(Object dest, Object orig) |
复制属性 |
| static void |
populate(Object bean, Map properties) |
将Map中的数据注入到Bean对象中 |
| static void |
setProperty(Object bean, String name, Object value) |
设置属性值 |
(3) . 使用示例
public class BeanUtilsTest
{
@Test
public void test() throws Exception
{
UserInfo userInfo = new UserInfo();
HashMap<String, String> properties = new HashMap<String, String>();
properties.put("userId", "wzy");
properties.put("userName", "王振宇");
BeanUtils.populate(userInfo, properties);
System.out.println(userInfo);
}
}
public User buildEntity() { //org.springframework.beans.BeanUtils比较方便,commons-beanutils比较复杂,前者使用多
User user = new User();
//org.springframework.beans.BeanUtils包,作用复制对象使用setXXX方法把属性转换成另一个javaBean
BeanUtils.copyProperties(this,user);
return user;
}
(4) . 运行结果
{userId:wzy,userName:王振宇}
ConvertUtils
(1) . ConvertUtils主要方法
提供了数据类型相互转换的方法。
(2) . ConvertUtils常用方法摘要
| 返回值 |
方法名 |
说明 |
| static String |
convert(Object value) |
将对象转换为字符串 |
| static Object |
convert(Object value, Class<?> targetType) |
将对象转换为指定数据类型对象 |
| static Object |
convert(String[] values, Class<?> clazz) |
将数组转换为指定数据类型对象 |
| static Object |
convert(String value, Class<?> clazz) |
将字符串转换为指定数据类型对象 |
(3) . 使用示例
public class ConvertUtilsTest
{
@Test
public void test() throws Exception
{
ConvertUtils.register(new Converter()
{
@Override
public <T> T convert(Class<T> arg0, Object arg1)
{
try
{
return (T) new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
.parse((String) arg1);
}
catch (ParseException e)
{
return null;
}
}
}, Date.class);
System.out.println(ConvertUtils
.convert("2016-04-09 12:41:00", Date.class));
}
}
(4) . 运行结果
Sat Apr 09 12:41:00 CST 2016