BeanUtil的简单使用(个人笔记)

这篇博客介绍了BeanUtil在Java开发中的应用,主要聚焦于如何使用BeanUtil进行对象属性赋值,包括setProperty方法和Converter的使用。作者提供了jar包下载链接,并分享了一段代码示例,方便日后查阅和学习。
摘要由CSDN通过智能技术生成

BeanUtil的jar包下载

https://download.csdn.net/download/qq_39627843/10990429

本文主要讲了BeanUtil 如何给变量赋值,其实也就是主要讲了 setproperty  和converter 两个用法

代码粘上去吧,以后复习可能用到

package mypackage;

import java.util.Date;
import java.util.Vector;

public class Fish
{
	String name = "red fish";
	int id = 4;
	Date date;
	public Date getDate() {
		return date;
	}
	public void setDate(Date date) {
		this.date = date;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
	public Fish()
	{
		System.out.println("a new fish");
	}
	public Fish( String name )
	{
		System.out.println("a new new fish");
		this.name = name;
	}
	
	
}
package mypackage;

import java.awt.*;
import java.awt.image.*;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Vector;

import javax.swing.*;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConversionException;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.Converter;
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;
import org.junit.Test;

//方法的反射
public class Mytest
{
	
	public void test()
	{
		String fishname = "比目鱼";	//假设用户提交了信息,而后台读取到的是String类
		String id = "123";			
		//这样我们就可以不知道数据类型情况下赋值(其实用到了反射技术)
		
		Fish fish = new Fish();
		try {
			//但是BeanUtil只支持8中基本类型的赋值
			BeanUtils.setProperty(fish, "name", fishname);
			BeanUtils.setProperty(fish, "id", id);
			
			System.out.println(fish.name+"  "+fish.id);
		
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
	}
	
	
	//利用converter,从而实现任意类型的赋值
	@Test
	public void test2()
	{
		Fish fish = new Fish();
		String date = "2012-01-01";
		//其实关于converter,Apache已经提供了很多converter,不用我们自己写
		//例如下面这句可以直接  ConvertUtil.register( new DateConverter(),Date.class); 其中DateConverter已经是有的
		
		ConvertUtils.register( new Converter() {
			
			@Override
			public Object convert(Class arg0, Object arg1)	//实现接口的转换方法
			{											//本方法为String转Date
				// TODO Auto-generated method stub
				if( !(arg1 instanceof String) )	//如果转换对象不是String类,则抛出一个异常
					try {
						throw new Exception("只支持String类转换为其他");
					} catch (Exception e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
				
				if( arg1 == null || ( (String)arg1 ).trim() == null )	//如果为空
					return null;
				
				SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
				
				try
				{
					Date d =  df.parse((String) arg1);
					
					return d;
				} catch (Exception e) {
					// TODO Auto-generated catch block
					throw new ConversionException(e);
					
					//e.printStackTrace();
				}
				 
			}
		}, Date.class);
		
		
		try 
		{
			//经过注册converter,可以直接赋值
			BeanUtils.setProperty(fish, "date", date);
		
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		System.out.println(fish.date);
	}
	
	@Test
	//先将值存在map中,然后赋值
	public void test3()
	{
		Map map = new HashMap();
		map.put("name", "a fish's name");
		map.put("date", "2000-12-12");
		
		ConvertUtils.register(new DateLocaleConverter(), Date.class);
		//DateLocaleConverter看起来更直观
		
		Fish fish = new Fish();
		try 
		{
			BeanUtils.populate(fish, map);	//直接赋值
			
		}
		catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println(fish.date);
	}
	
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值