首先创建一个user类,用于封装数据.
package cn.itcast.test; public class User { private String loginname; //登录名 private String loginpass; //登录密码 private String age; private String birthday; public String getBirthday() { return birthday; } public void setBirthday(String birthday) { this.birthday = birthday; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getLoginname() { return loginname; } public void setLoginname(String loginname) { this.loginname = loginname; } public String getLoginpass() { return loginpass; } public void setLoginpass(String loginpass) { this.loginpass = loginpass; } @Override public String toString() { return "User [loginname=" + loginname + ", loginpass=" + loginpass + ", age=" + age + ", birthday=" + birthday + "]"; } }
创建CommonUtils类.使用ConvertUtils类,这个类有个register方法是用来注册的.
package cn.itcast.test; import java.util.Map; import java.util.UUID; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.ConvertUtils; /** * 小小工具 * @author Admin * */ public class CommonUtils { /** * 返回一个不重复的字符串 */ public static String uuid(){ return UUID.randomUUID().toString().replace("-", "").toUpperCase(); } /** * 把map类型转换成指定类型 * @param map * @param clazz * @return */ @SuppressWarnings("rawtypes") public static <T> T toBean(Map map, Class<T> clazz){ try { /* * 1.通过参数clazz创建实例 * 2.使用beanUtils.populate把map的数据封装到bean中 */ T bean = clazz.newInstance(); ConvertUtils.register(new DateConverter(), java.util.Date.class); return bean; } catch (Exception e) { throw new RuntimeException(e); } } }
为了实现register方法 register(new DateConverter,java.util.Date.class),需要写一个类,DateConverter.
package cn.itcast.test; import java.text.ParseException; import java.text.SimpleDateFormat; import org.apache.commons.beanutils.Converter; public class DateConverter implements Converter{ @Override public Object convert(Class type, Object value) { if (value == null) return null; //如果要转换成值为null,那么直接返回null if (!(value instanceof String)) { //如果要转换的值不是String,那么就不转换了,直接返回 return value; } String val = (String) value; //把值转换成String //使用simpledateformat进行转换 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); try { return sdf.parse(val); } catch (ParseException e) { throw new RuntimeException(e); } } }
然后写demo测试类,用来测试把 map类型转换成指定类型.
package cn.itcast.test; import java.util.HashMap; import java.util.Map; import org.apache.commons.beanutils.ConvertUtils; import org.apache.commons.beanutils.Converter; import org.junit.Test; import cn.itcast.commons.CommonUtils; public class demo { /** * 写一个Map,Map中的String要封装到User的age中 * BeanUtils可以把String转换成int */ @Test public void fun1(){ Map<String,String> map = new HashMap<String,String>(); map.put("loginname", "张三"); map.put("loginpass", "123"); map.put("age", "55"); User user = CommonUtils.toBean(map, User.class); System.out.println(user); } @Test public void fun2(){ Map<String,String> map = new HashMap<String,String>(); map.put("loginname", "张三"); map.put("loginpass", "123"); map.put("age", "55"); map.put("birthday", "2013-01-29"); User user = CommonUtils.toBean(map, User.class); System.out.println(user); } }
控制台输出.