码迷,mamicode.com
首页 > 其他好文 > 详细

自定义日期类型转换器

时间:2014-12-08 17:56:32      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:自定义日期类型转换器   类型的转换器   


(1)首先看一下项目的布局结构:

bubuko.com,布布扣

(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 + "]";
	}

}


2.DateConverter.java(实现Converter接口)

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);
		}
	}
	
}

3.CommonUtils.java

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);
		}
	}

}

4.Demo.java用于测试


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);
	}
}

bubuko.com,布布扣bubuko.com,布布扣



结果出来  以后可以以此类比 写出其他类型的转换器



自定义日期类型转换器

标签:自定义日期类型转换器   类型的转换器   

原文地址:http://blog.csdn.net/xlgen157387/article/details/41804629

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!