CommonUtils

package com.utils;

import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import java.util.Set;

public class CommonUtils {
    /**
     * 将map中的值赋值到po中
     *
     * @param map
     *            前台传过来的值封装成的map对象
     * @param obj
     *            po实体类
     */
    public static void getLatestObjectByMap(Map<String, ?> map, Object obj) {
        Set<String> keys = map.keySet();
        for (String key : keys) {
            Object value = map.get(key);
            Class<? extends Object> clazz = obj.getClass();
            try {
                Field field = clazz.getDeclaredField(key);
                field.setAccessible(true);
                field.set(obj, getValue(key, field.getType().getName(), value));
            } catch (NoSuchFieldException e) {
                e.printStackTrace();
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 将fieldValue转为dataType类型的值
     *
     * @param key
     * @param dataType
     * @param fieldValue
     * @return
     */
    private static Object getValue(String key, String dataType,
            Object fieldValue) {
        String errorMessage = key + "为[" + dataType + "]而设置的值为["
                + fieldValue.getClass().getName() + "]";
        String numberFormatErrorMessage = key + "  [" + fieldValue + "]转换为["
                + dataType + "]出错";
        System.out.println(dataType);
        if ("java.sql.Date".equals(dataType)) {
            if (fieldValue instanceof java.sql.Date) {
                return fieldValue;
            } else if (fieldValue instanceof java.lang.String) {
                String formatString = "yyyy-MM-dd";
                try {
                    SimpleDateFormat sdf = new SimpleDateFormat(formatString);
                    Date date = sdf.parse((String) fieldValue);
                    return new java.sql.Date(date.getTime());
                } catch (Exception e) {
                    throw new RuntimeException(key + "[" + fieldValue
                            + "]格式错误,正确格式为[" + formatString + "]");
                }
            } else {
                throw new RuntimeException(errorMessage);
            }
        } else if ("java.util.Date".equals(dataType)) {
            if (fieldValue instanceof java.util.Date) {
                return fieldValue;
            } else if (fieldValue instanceof java.lang.String) {
                String formatString = "yyyy-MM-dd";
                try {
                    SimpleDateFormat sdf = new SimpleDateFormat(formatString);
                    java.util.Date date = sdf.parse((String) fieldValue);
                    return date;
                } catch (Exception e) {
                    throw new RuntimeException(key + "[" + fieldValue
                            + "]格式错误,正确格式为[" + formatString + "]");
                }
            } else {
                throw new RuntimeException(errorMessage);
            }
        } else if ("java.sql.Timestamp".equals(dataType)) {
            if (fieldValue instanceof java.sql.Timestamp) {
                return fieldValue;
            } else if (fieldValue instanceof java.lang.String) {
                String formatString = "yyyy-MM-dd HH:mm:ss";
                try {
                    SimpleDateFormat sdf = new SimpleDateFormat(formatString);
                    Date date = sdf.parse((String) fieldValue);
                    return new Timestamp(date.getTime());
                } catch (Exception e) {
                    throw new RuntimeException(key + "[" + fieldValue
                            + "]格式错误,正确格式为[" + formatString + "]");
                }
            } else {
                throw new RuntimeException(errorMessage);
            }
        } else if ("java.lang.String".equals(dataType)) {
            if (fieldValue instanceof java.lang.String) {
                return fieldValue;
            } else {
                throw new RuntimeException(errorMessage);
            }
        } else if ("java.math.BigDecimal".equals(dataType)) {
            if (fieldValue instanceof java.math.BigDecimal) {
                return fieldValue;
            } else if (fieldValue instanceof java.lang.String) {
                try {
                    return new BigDecimal(String.valueOf(fieldValue));
                } catch (Exception e) {
                    throw new RuntimeException(numberFormatErrorMessage);
                }
            } else {
                throw new RuntimeException(errorMessage);
            }
        } else if (("java.lang.Integer".equals(dataType))
                || ("int".equals(dataType))) {
            if (fieldValue instanceof java.lang.Integer) {
                return fieldValue;
            } else if (fieldValue instanceof java.lang.String) {
                try {
                    return new Integer(String.valueOf(fieldValue));
                } catch (Exception e) {
                    throw new RuntimeException(numberFormatErrorMessage);
                }
            } else {
                throw new RuntimeException(errorMessage);
            }
        } else if (("java.lang.Long".equals(dataType))
                || ("long".equals(dataType))) {
            if (fieldValue instanceof java.lang.Long) {
                return fieldValue;
            } else if (fieldValue instanceof java.lang.String) {
                try {
                    return new Long(String.valueOf(fieldValue));
                } catch (Exception e) {
                    throw new RuntimeException(numberFormatErrorMessage);
                }
            } else {
                throw new RuntimeException(errorMessage);
            }

        } else if (("java.lang.Short".equals(dataType))
                || ("short".equals(dataType))) {
            if (fieldValue instanceof java.lang.Short) {
                return fieldValue;
            } else if (fieldValue instanceof java.lang.String) {
                try {
                    return new Short(String.valueOf(fieldValue));
                } catch (Exception e) {
                    throw new RuntimeException(numberFormatErrorMessage);
                }
            } else {
                throw new RuntimeException(errorMessage);
            }
        } else if (("java.lang.Byte".equals(dataType))
                || ("byte".equals(dataType))) {
            if (fieldValue instanceof java.lang.Byte) {
                return fieldValue;
            } else if (fieldValue instanceof java.lang.String) {
                try {
                    return new Byte(String.valueOf(fieldValue));
                } catch (Exception e) {
                    throw new RuntimeException(numberFormatErrorMessage);
                }
            } else {
                throw new RuntimeException(errorMessage);
            }
        } else if (("java.lang.Float".equals(dataType))
                || ("float".equals(dataType))) {
            if (fieldValue instanceof java.lang.Float) {
                return fieldValue;
            } else if (fieldValue instanceof java.lang.String) {
                try {
                    return new Float(String.valueOf(fieldValue));
                } catch (Exception e) {
                    throw new RuntimeException(numberFormatErrorMessage);
                }
            } else {
                throw new RuntimeException(errorMessage);
            }
        } else if (("java.lang.Double".equals(dataType))
                || ("double".equals(dataType))) {
            if (fieldValue instanceof java.lang.Double) {
                return fieldValue;
            } else if (fieldValue instanceof java.lang.String) {
                try {
                    return new Double(String.valueOf(fieldValue));
                } catch (Exception e) {
                    throw new RuntimeException(numberFormatErrorMessage);
                }
            } else {
                throw new RuntimeException(errorMessage);
            }
        } else if (("java.lang.Boolean".equals(dataType))
                || ("boolean".equals(dataType))) {
            if (fieldValue instanceof java.lang.Boolean) {
                return fieldValue;
            } else if (fieldValue instanceof java.lang.String) {
                if ("true".equals(fieldValue)) {
                    return new Boolean(true);
                } else if ("false".equals(fieldValue)) {
                    return new Boolean(false);
                } else {
                    throw new RuntimeException(numberFormatErrorMessage);
                }
            } else {
                throw new RuntimeException(errorMessage);
            }
        } else if (("java.lang.Character".equals(dataType))
                || ("char".equals(dataType))) {
            {
                return new Character(String.valueOf(fieldValue).charAt(0));
            }
        }
        return fieldValue;
    }
}
时间: 2024-08-28 10:24:00

CommonUtils的相关文章

浅谈Java工具类CommonUtils的使用

package com.xushouwei.cn; import java.util.HashMap; import java.util.Map; import org.junit.Test; import cn.itcast.commons.CommonUtils; /** * 测试CommonUtils类 * @author Administrator * */ public class CommonUtilsTest { /** * 测试:返回一个随机32位长得字符串 * CommonUt

排序算法三:堆排序(Heapsort)

堆排序(Heapsort)是一种利用数据结构中的堆进行排序的算法,分为构建初始堆,减小堆的元素个数,调整堆共3步. (一)算法实现 1 protected void sort(int[] toSort) { 2 buildHeap(toSort); 3 for (int i = toSort.length - 1; i > 0; i--) { 4 CommonUtils.swap(toSort, 0, i); 5 adjustHeap(toSort, 0, i); 6 } 7 } 8 9 /**

android开发步步为营之54:读取assets,raw文件夹下文件

一.读取assets文件下文件products.json public String readAssetFile(Context c, String file) { Elapsed profiler = new Elapsed(); BufferedReader bufReader = null; try { InputStreamReader inputReader = new InputStreamReader(c.getResources().getAssets().open(file))

第三方登录接入-qq,weibo-java

开发之前 需求:网站接入qq,sina微博登录,本文最后付效果图: 说明:大部分网站本身是需要用户概念的,很多操作依附于用户,而qq或微博作为一种登录方式指向用户而已,我参考了一下其他网站的做法, 一般有如下两种做法: 1,强制绑定:用户第一次通过qq登录时必须与该网站账户绑定,也就是用户必须要先有一个此网站账户才能登录成功 2,互相独立,用户第一次通过qq登录时直接重新为用户注册一个账户,如以用户名为qq_123456直接注册一个账户,与其他账户无关: 站在用户角度考虑下,可能需要更多的选择性

剑指架构师系列-持续集成之Maven+Nexus+Jenkins+git+Spring boot

1.Nexus与Maven 先说一下这个Maven是什么呢?大家都知道,Java社区发展的非常强大,封装各种功能的Jar包满天飞,那么如何才能方便的引入我们项目,为我所用呢?答案就是Maven,只需要粘贴个Jar包的地址,Maven就会自动到网上查找引入到你的项目中.不过首先你的下载个Maven,然后指定一下 当下来的包包(jar)放到哪里. 我的版本是apache-maven-3.2.1,找到conf里面的配置文件 settings.xml,瞅瞅有没有 <localRepository>E:

springmvc 处理lsit类型的请求參数映射成实体属性

<table align="center" cellspacing="10"> <tr> <td> 母码数目:<input type="text" name="uidCodeGenNumParamList[0].superCodeGenNum" style="width:180px;" class="textbox" maxlength=&quo

四、java多线程核心技术——synchronized同步方法与synchronized同步快

一.synchronized同步方法 论:"线程安全"与"非线程安全"是多线程的经典问题.synchronized()方法就是解决非线程安全的. 1.方法内的变量为线程安全 public void addI(String username) { try { int num = 0; \\方法内的变量为线程安全 if (username.equals("a")) { num = 100; System.out.println("a set

Android消息推送:手把手教你集成小米推送

前言 在Android开发中,消息推送功能的使用非常常见. 为了降低开发成本,使用第三方推送是现今较为流行的解决方案. 今天,我将手把手教大家如何在你的应用里集成小米推送 该文档基于小米推送官方Demo,并给出简易推送Demo 看该文档前,请先阅读我写的另外两篇文章: 史上最全解析Android消息推送解决方案 Android推送:第三方消息推送平台详细解析 目录 1. 官方Demo解析 首先,我们先对小米官方的推送Demo进行解析. 请先到官网下载官方Demo和SDK说明文档 1.1 Demo

JAVA随机的32位长的字符串

CommonUtils类依赖的jar包:commons-beanutils.jar.commons-logging.jar uuid()方法 * 返回一个随机的32位长的字符串 * 用途: * 可以用来做id等各种不能重复的变量,数据库表中的主键不能重复的,它就是不重复的! @Test public void testUnid() { String s=CommonUtils.uuid(); System.out.println(s); } 作用:把一个map中的数据封装到javabean中 *