您的位置:首页 > 其它

从零开始学JDBC--1.15 ConvertUtils组件的用法

2016-11-02 21:43 302 查看
ConvertUtils组件是用来干嘛的?

为下面的各种引用类型提供快捷的转换方法:



项目中我们经常会碰到将String类型转换为日期类型,需要写一些工具类专门去实现,而且相当繁琐

不过,ConvertUtils组件的出现,为我们提供了更快捷更省心的方法

比如:我们需要对一个人的生日(Date类型)进行赋值,输入经常会是String类型:

我们先模拟一个注册表单:

//模拟表单数据
String name = "jack";
String age = "age";
String birth = "1991.11.13";


创建一个新的对象:

// 创建对象
Admin admin = new Admin();


封装:

/*
*  把表单提交的数据封装到对象中
*/
BeanUtils.copyProperty(admin, "userName", name);
BeanUtils.copyProperty(admin, "age", age);
BeanUtils.copyProperty(admin, "birth", birth);
/*
* 打印所有属性值
*/
System.out.println(admin);


问题就出在封装这一步,birth是Date类型的,按理说,应该new一个SimpleDateFormat

ConvertUtils实现了一个register()方法,可以通过注册类型转换的过程,将需要转换的类型转换成对应的方法

在向对象封装数据之前,加入这一段注册代码:

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

@Override
public Object convert(Class type, Object value) {
if(type != Date.class){
return null;
}
if(value ==null || "".equals(value.toString().trim())){
return null;
}

try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
return sdf.parse(value.toString());
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
}, Date.class);


运行结果(重写了实体类的toString()方法):

Admin [userName=jack, age=0, birth=Wed Nov 13 00:00:00 CST 1991]


可是。。。看起来还是那么多代码,ConvertUtils为常用的类型转换都提供了方法:

//      注册本地日期类型转换器
ConvertUtils.register(new DateLocaleConverter(),Date.class);


注意:Date的String格式需要写成“yyyy-MM-dd”或者“yyyy/MM/dd”等本地的形式,否则转换不成功!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: