package com.icil.booking.service.util;

import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import com.icil.fw.logging.ICILLogger;
import com.icil.fw.logging.ICILLoggerFactory; import net.sf.cglib.beans.BeanCopier;
import net.sf.cglib.core.Converter; public class CglibBeanCopierUtils { private static final ICILLogger logger = ICILLoggerFactory
.getInstance(CglibBeanCopierUtils.class); public static Map<String, BeanCopier> beanCopierMap = new HashMap<String, BeanCopier>(); /**
* @Title: copyProperties
* @Description: TODO(bean属性转换)
* @param source
* 资源类
* @param target
* 目标类
* @author yushaojian
* @date 2015年11月25日下午4:56:44
*/
public static void copyProperties(Object source, Object target) {
String beanKey = generateKey(source.getClass(), target.getClass());
BeanCopier copier = null;
if (!beanCopierMap.containsKey(beanKey)) {
copier = BeanCopier.create(source.getClass(), target.getClass(),
true);
beanCopierMap.put(beanKey, copier);
} else {
copier = beanCopierMap.get(beanKey);
}
copier.copy(source, target, new Converter() {
private final Map<String, BeanCopier> bcMap = new HashMap<String, BeanCopier>(); @Override
public Object convert(Object sourcePropVal, Class targetPropClazz,
Object targetSetMethodName) {
/*logger.debug("======>>>>> sourcePropVal " + sourcePropVal
+ "======>>>>>targetPropClazz " + targetPropClazz
+ "======>>>>>targetSetMethodName "
+ targetSetMethodName);*/
/*if (BigDecimal.class.equals(targetPropClazz)) {
BigDecimal bd = null;
if (sourcePropVal != null && !"".equals(sourcePropVal)) {
bd = new BigDecimal(sourcePropVal.toString());
bd=bd.setScale(4, BigDecimal.ROUND_HALF_UP);
}
return bd;
} else if (Integer.class.equals(targetPropClazz)) {
Integer value = null;
if (sourcePropVal != null && !"".equals(sourcePropVal)) {
value = Integer.parseInt(sourcePropVal.toString());
}
return value;
} else if (Date.class.equals(targetPropClazz)) {
Date date = null;
if(sourcePropVal!=null && !"".equals(sourcePropVal)){
SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
try {
date = sdf.parse((String)sourcePropVal);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return date;
}else if (int.class.equals(targetPropClazz)){
int value =0 ;
if (sourcePropVal != null && !"".equals(sourcePropVal)) {
value = Integer.parseInt(sourcePropVal.toString());
}
return value;
}*/
return sourcePropVal;
}
});
} protected static Object convertListGenericType(Object sourcePropVal) {
// TODO Auto-generated method stub
return null;
} private static String generateKey(Class<?> class1, Class<?> class2) {
return class1.toString() + class2.toString();
}
}

自定义BeanUtils的更多相关文章

  1. BeanUtils制作自定义的转换器

    一般来说,BeanUtils自带的Converter基本上可以满足我们在开发过程中的使用了,然而很多时候我们还是需要自定义一些转换器. MyBean.java package beanutils; i ...

  2. SpringBoot08 请求方式、参数获取注解、参数验证、前后台属性名不一致问题、自定义参数验证注解、BeanUtils的使用

    1 请求方式 在定义一个Rest接口时通常会利用GET.POST.PUT.DELETE来实现数据的增删改查:这几种方式有的需要传递参数,后台开发人员必须对接收到的参数进行参数验证来确保程序的健壮性 1 ...

  3. java jdbc的优化之BeanUtils组件

    1. BeanUtils组件 1.1 简介 程序中对javabean的操作很频繁, 所以apache提供了一套开源的api,方便对javabean的操作!即BeanUtils组件. BeanUtils ...

  4. BeanUtils

    BeanUtils包的使用   BeanUtils工具包是由Apache公司所开发,主要是方便程序员对Bean类能够进行简便的操作. 在使用BeanUtils工具包之前我们需要的Jar包有以下几种: ...

  5. BeanUtils: 威力和代价(转载)

    转自:http://blog.sina.com.cn/s/blog_ab3fbf1b0101jbxz.html Apache Jakarta Commons项目非常有用.我曾在许多不同的项目上或直接或 ...

  6. atitit.java给属性赋值方法总结and BeanUtils 1.6.1 .copyProperty的bug

    atitit.java给属性赋值方法总结and BeanUtils 1.6.1 .copyProperty的bug 1. core.setProperty(o, "materialId&qu ...

  7. 15、Jdbc的优化(BeanUtils组件)

    Jdbc的优化! BeanUtils组件 自定义一个持久层的框架 DbUtils组件 案例优化 1. BeanUtils组件 1.1    简介 程序中对javabean的操作很频繁, 所以apach ...

  8. BeanUtils框架的简单运用

    Sun公司的内省API过于繁琐,所以Apache组织结合很多实际开发中的应用场景开发了一套简单.易用的API操作Bean的属性——BeanUtils Beanutils工具包的常用类: •BeanUt ...

  9. BeanUtils组件

    引入jar包(需要引入依赖的日志jar包) Person p = new Person(); p.setName("Daisy"); p.setAge(12); //对象的copy ...

随机推荐

  1. Properties类与配置文件

    //加载文件public static void testLoadProperties() throws Exception { Properties properties = new Propert ...

  2. 好使-利用python 下paramiko模块无密码登录

    [root@salt-minion02 paramiko]# vim baoleiji4.py # -*- coding:utf-8 -*-import paramikoprivate_key = p ...

  3. Hadoop操作前准备工作

    摘要:本文介绍Hadoop操作前的准备工作. 关键词:Hadoop  Linux   JDK  WinSCP 俗语说,“磨刀不误砍柴工”.Hadoop操作前的准备工作可以加快Hadoop的操作与应用. ...

  4. 初学者必读原生AJAX-异步的javaScript和XML

    1.前台页面 <form action="#" method="post"> 姓名<input type="text" n ...

  5. sql serve 创建序列

    Oracle中有sequence的功能,SQL Server类似的功能使用Identity列实现,但是有很大的局限性. 在2012中,微软终于增加了 sequence 对象,功能和性能都有了很大的提高 ...

  6. Google Android API官网封杀了,没法查android技术资料的3种解决方式

    1.从uhdesk上訪问简化版android api在线文档(反应速度极快) http://www.uhdesk.com/simpleandroidoc/index.html   2.下载chm本地文 ...

  7. 标 题: Re: 总感觉IT没我大山东啥事?

    发信人: liuzhlai (liuzhlai), 信区: ITExpress 标  题: Re: 总感觉IT没我大山东啥事? 发信站: 水木社区 (Sat Aug 22 15:51:50 2015) ...

  8. hadoop之 exceeds the limit of concurrent xcievers处理

    dfs.datanode.max.transfer.threads: 默认 4096 < 2.0之前该参数为dfs.datanode.max.xcievers >解释:Specifies ...

  9. hihocoder 1513 小Hi的烦恼——bitset

    题目:http://hihocoder.com/problemset/problem/1513 自带的题解写得很好…… #include<cstdio> #include<cstri ...

  10. 判断真实ip

            #region 获取真实ip        /// <summary>        /// 获取真实ip        /// </summary>      ...