标签:自定义日期类型转换器 类型的转换器
(1)首先看一下项目的布局结构:
(2)要准备的两个jar包,在lib目录下的,commons-beanutils-1.8.3.jar commons-logging-1.1.1.jar这两个是必须的 要提前引入,以免不必要的麻烦!
并且下边要注意包的引入 :是在org.apache下的 不是在com.sum.org.apache下的 错误的话 不会成功!
(3)全部代码如下:(有注释 这里不再解释)
1.User.java
package com.lc.commons; public class User { private String username; private String password; private int age; private java.util.Date birthdate; //get set方法 @Override public String toString() { return "User [username=" + username + ", password=" + password + ", age=" + age + ", birthdate=" + birthdate + "]"; } }
package com.lc.commons; import java.text.ParseException; import java.text.SimpleDateFormat; import org.apache.commons.beanutils.Converter; /** * 把String转化为java.util.Date的类型转换器 * @author xuliugen * */ public class DateConverter implements Converter { public Object convert(Class type, Object value) { if(value == null) return null; //如果要转换的值为null 直接返回 if(value instanceof String){ //如果要转换的不是String 直接返回 return value; } String val = (String) value; //把值转化为String SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); try { return sdf.parse(val); } catch (ParseException e) { throw new RuntimeException(e); } } }
package com.lc.commons; import java.util.Map; import java.util.UUID; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.ConvertUtils; /** * 小工具类 * * @author xuliugen * */ public class CommonUtils { /** * 返回一个不重复的字符串 * * @return */ public static String uuid() { return UUID.randomUUID().toString().replace("-", "").toUpperCase(); } /** * 把map转化成对象 * * @param map * @param calzz * @return * * 把Map转化成指定类型 */ public static <T> T toBean(Map map, Class<T> clazz) { try { /* * 1.通过参数clazz创建实例 * 2.使用BeanUtils.populate把map的数据封闭到bean中 */ T bean = clazz.newInstance(); /* * 自定义的类型转换器DateConverter() * 1.第一个参数为自定义的转换器 * 2.第二个参数为目标类型 */ ConvertUtils.register(new DateConverter(),java.util.Date.class); BeanUtils.populate(bean, map); return bean; } catch (Exception e) { throw new RuntimeException(e); } } }
package com.lc.commons; import java.util.HashMap; import java.util.Map; import org.junit.Test; public class Demo { /* * 写一个map,map中的String要封装到User的age中 */ @Test public void fun1() { Map<String, String> map = new HashMap<String, String>(); map.put("username", "张三"); map.put("password", "123"); map.put("age", "55"); User user = CommonUtils.toBean(map,User.class); System.out.println(user); } /** * 不可以把String转化为java.util.Date,需要我们注册一个类型转换器 * 1.写一个类型转化器,用来把String转化为Date * 2. */ @Test public void fun2() { Map<String, String> map = new HashMap<String, String>(); map.put("username", "张三"); map.put("password", "123"); map.put("age", "55"); map.put("birthday", "2013-01-29"); User user = CommonUtils.toBean(map,User.class); System.out.println(user); } }
结果出来 以后可以以此类比 写出其他类型的转换器
标签:自定义日期类型转换器 类型的转换器
原文地址:http://blog.csdn.net/xlgen157387/article/details/41804629