zoukankan      html  css  js  c++  java
  • 对于Java Bean的类型转换问题()使用 org.apache.commons.beanutils.ConvertUtils)

    在进行与数据库的交互过程中,由数据库查询到的数据放在 map 中,由 map 到 JavaBean 的过程中可以使用 BeanUtils.populate(map,bean)来进行转换

    这里要处理的问题是,populate 仅仅只能转换基本类型,对于date 类型的是不能由 String --> Date 的。此时需要使用ConvertUtils.register(Convert convert,Class clazz) 进行注册。

    1:解决为什么注册后就能就行转换了、

      ans:因为 populate() 内部自动调用了convert() 方法,因此注册之后就能进行转换了。

    2:Convert 是接口,我们在注册时需要编写Convert 的实现类,以下是一个实例:

      package cn.starzyn.commons;

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import org.apache.commons.beanutils.Converter;
    
    public class DateConvert implements Converter{
    
        @SuppressWarnings({ "unchecked", "rawtypes" })
        @Override
        public Object convert(Class type, Object value) {
            if(value == null) return null;
            if(!(value instanceof String)) return value;
            String val = (String)value;
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date date = null;
            try {
                date =   sdf.parse(val);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            return date;
        }


    }
    @SuppressWarnings({ "rawtypes", "unchecked" })
        public static <T> T toBean(Map map,Class<T> clazz) {
            T bean;
            try {
                bean = clazz.newInstance();
           //注册类型转换器 ConvertUtils.register(
    new DateConvert(), java.util.Date.class); BeanUtils.populate(bean, map); return bean; } catch (Exception e) { throw new RuntimeException(e);// TODO: handle exception } }
  • 相关阅读:
    第三次实验总结
    实验总结
    自我介绍
    BGP学习笔记
    source insight用于C语言编程的工具脚本
    LevelDB源码剖析
    LevelDB源码之五Current文件Manifest文件版本信息
    LevelDB源码之六缓存机制
    LevelDB源码之四LOG文件
    jQuery向动态生成的内容添加事件响应
  • 原文地址:https://www.cnblogs.com/zhaoningzyn/p/8689903.html
Copyright © 2011-2022 走看看