返回

BeanUtils的使用

发布时间:2023-09-09 18:16:01 81


BeanUtils apache开发的为了简化对bean的开发的一套API下面就对开发中常用的API进行演示

第一步:搭建BeanUtil所需的*.jar commons-beanutils-1.8.3.jar

commons-logging-1.1.1.jar 导入包后需要构建路径 见附件

第二步:编写一个bean Person.java

public class Person {

private int age;
private String name;
private String password;
private Date birthdiy;

public Date getBirthdiy() {
return birthdiy;
}

public void setBirthdiy(Date birthdiy) {
this.birthdiy = birthdiy;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public String getName() {
return name;
}

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

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

}

第三步:编写一个简单单元测试演示常用技巧

public class BeanUtilsTest {

/*
* BeanUtils默认只支持8中基本数据类型 ,基本类型会自动转换为相应的bean类型
*
*/
@Test
public void test1() throws IllegalAccessException, InvocationTargetException
{
Person person=new Person();
BeanUtils.setProperty(person, "name","小张");
BeanUtils.setProperty(person, "age","20");
BeanUtils.setProperty(person, "password","1234");
System.out.println(person.getName());
System.out.println(person.getAge());
System.out.println(person.getPassword());
}
/**
* 自定义类型转换器
* @throws InvocationTargetException
* @throws IllegalAccessException
*/

@Test
public void test2() throws IllegalAccessException, InvocationTargetException

{
//注册一个类型转换器
ConvertUtils.register(new Converter(){

public Object convert(Class type, Object value) {

//判断这个value是否为空
if(value==null)
{
return null;
}
//判断这个value是否是字符串类型
if(!(value instanceof String))
{
return null;
}
//判断这个value是否为空字符串
String str=(String)value;
if(str.trim().equals(""))
{
return null;
}
//满足上面条件就执行类型装换

SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");

try {
return dateFormat.parse(str);
} catch (ParseException e) {

throw new ConversionException("不能类型转换");
}

}

}, Date.class);

Person person=new Person();
BeanUtils.setProperty(person, "birthdiy", "2010-03-12");
Date date=person.getBirthdiy();
System.out.println(date.toLocaleString());

}

/**
* 使用BeanUtils中的类型转换器
* @throws InvocationTargetException
* @throws IllegalAccessException
*/

@Test
public void test3() throws IllegalAccessException, InvocationTargetException

{
//第二个参数的意思是要被转换成什么类型
ConvertUtils.register(new DateLocaleConverter(), Date.class);
Person person=new Person();
BeanUtils.setProperty(person, "birthdiy", "2010-03-12");
Date date=person.getBirthdiy();
System.out.println(date.toLocaleString());

}
/*
* 使用Map来把数据封装到bean中
*
*/
@Test
public void test4() throws IllegalAccessException, InvocationTargetException

{
Map map=new HashMap();
map.put("age", "20");
map.put("name", "小王");
map.put("password", "");
map.put("birthdiy", "2010-10-12");

//第二个参数的意思是要被转换成什么类型
ConvertUtils.register(new DateLocaleConverter(), Date.class);
Person person=new Person();
//使用map集合去填充到bean中
BeanUtils.populate(person, map);

Date date=person.getBirthdiy();
System.out.println(date.toLocaleString());
System.out.println(person.getAge());
System.out.println(person.getName());
System.out.println(person.getPassword());

}

}

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
jpa+spring整合异常 2023-09-09 15:01:18