`

BeanUtil

 
阅读更多

Bean处理

 

import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletRequest;
import org.apache.commons.beanutils.BeanUtilsBean;
import org.apache.commons.beanutils.ConvertUtilsBean;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.beanutils.PropertyUtilsBean;
import org.apache.log4j.Logger;

public class BeanUtil {
	private static Logger logger = Logger.getLogger(BeanUtil.class);

	private BeanUtil() {
	}

	public static <T> T createBean(Class<T> c, ServletRequest request)
			throws Exception {
		return createBean(c, request.getParameterMap());
	}

	public static <T> T createBean(Class<T> c, Map<?, ?> properties)
			throws Exception {
		try {
			T t = c.newInstance();
			BeanUtil.getBeanUtilsBean().populate(t, properties);
			return t;
		} catch (Exception e) {
			logger.debug("错误:", e);
			throw new Exception("数据处理失败!");
		}
	}

	public static void copyProperties(Object dest, Object orig)
			throws Exception {
		try {
			BeanUtil.getBeanUtilsBean().copyProperties(dest, orig);
		} catch (Exception e) {
			logger.debug("错误:", e);
			throw new Exception("数据处理失败!");
		}
	}

	public static BeanUtilsBean getBeanUtilsBean() {
		DateConverter dc = new DateConverter();
		ConvertUtilsBean cub = new ConvertUtilsBean();
		cub.register(dc, java.util.Date.class);
		cub.register(dc, java.sql.Date.class);
		cub.register(dc, java.sql.Time.class);
		cub.register(dc, java.sql.Timestamp.class);
		PropertyUtilsBean pub = new PropertyUtilsBean();
		BeanUtilsBean utils = new BeanUtilsBean(cub, pub);
		return utils;
	}

	/**
	 * 获取指定类的所有属性
	 * 
	 * @param c
	 *            要获取属性的JavaBean类
	 * @return 类的所有属性集合
	 */
	public static List<String> getBeanProperty(Class<?> c) {
		ArrayList<String> list = new ArrayList<String>();
		try {
			PropertyDescriptor[] pds = PropertyUtils.getPropertyDescriptors(c);
			for (PropertyDescriptor pd : pds) {
				String name = pd.getName();
				if (!name.equals("class")) {
					list.add(pd.getName());
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return list;
	}

	/**
	 * 获取指定类的所有可读属性方法集合,键值为属性名称。
	 * 
	 * @param c
	 *            要获取属性的JavaBean类
	 * @return 类的所有可读属性方法集合
	 */
	public static Map<String, Method> getBeanGetter(Class<?> c) {
		LinkedHashMap<String, Method> map = new LinkedHashMap<String, Method>();
		try {
			PropertyDescriptor[] pds = PropertyUtils.getPropertyDescriptors(c);
			for (PropertyDescriptor pd : pds) {
				String name = pd.getName();
				Method method = pd.getReadMethod();
				if (!name.equals("class") && method != null) {
					map.put(name, method);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return map;
	}

	/**
	 * 获取指定类的所有可写属性方法集合,键值为属性名称。
	 * 
	 * @param c
	 *            要获取属性的JavaBean类
	 * @return 类的所有可写属性方法集合
	 */
	public static Map<String, Method> getBeanSetter(Class<?> c) {
		LinkedHashMap<String, Method> map = new LinkedHashMap<String, Method>();
		try {
			PropertyDescriptor[] pds = PropertyUtils.getPropertyDescriptors(c);
			for (PropertyDescriptor pd : pds) {
				String name = pd.getName();
				Method method = pd.getWriteMethod();
				if (method != null) {
					map.put(name, method);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return map;
	}

	/**
	 * 获取指定对象的字符串表达式(输出所有字段的字符表达式)
	 * 
	 * @param o
	 *            要输出信息的对象
	 */
	public static String getBeanInfoString(Object o) {
		StringBuilder sb = new StringBuilder();
		Map<String, Method> map = getBeanGetter(o.getClass());
		for (String name : map.keySet()) {
			try {
				sb.append(name + ":" + map.get(name).invoke(o) + ",");
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		if (sb.indexOf(",") != -1) {
			sb.deleteCharAt(sb.length() - 1);
		}
		return sb.toString();
	}

	public static boolean classIsType(String className, Class<?> c)
			throws Exception {
		Class<?> clazz = Class.forName(className);
		if (clazz.equals(c)) {
			return true;
		}
		Class<?>[] classes = clazz.getInterfaces();
		for (Class<?> ic : classes) {
			if (ic.equals(c)) {
				return true;
			}
		}
		Class<?> sc = clazz.getSuperclass();
		if (sc == null) {
			return false;
		}
		if (sc.equals(c)) {
			return true;
		} else if (classIsType(sc.getName(), c)) {
			return true;
		}
		return false;
	}
}

 

分享到:
评论

相关推荐

    BeanUtil框架完整包

    BeanUtil框架是一个在Java开发中常用的工具库,主要用于对象属性的获取、设置、拷贝以及类型转换等操作。它的设计目标是简化Java Bean的操作,提高代码的可读性和可维护性。这个“BeanUtil框架完整包”包含了...

    beanutil数据库操作工具

    BeanUtil是一个常用的Java工具库,主要用于对象与数据库之间的数据转换,简化了数据库操作中的数据绑定过程。这个工具库使得开发者可以更加便捷地处理Java Bean和SQL查询结果之间的映射,提高了开发效率。在Java开发...

    BeanUtil_Jar包

    《BeanUtil_Jar包:JavaBean操作神器》 在Java编程世界中,BeanUtils库扮演着重要的角色,它为开发者提供了便捷的操作JavaBean的工具类。这个“BeanUtil_Jar包”正是这样一个实用的工具集,它包含了丰富的功能,...

    BEANutil工具类,可获取生日

    BEANutil工具类,可获取生日,简单的几行代码,给需要的你。BEANutil工具类,可获取生日,简单的几行代码,给需要的你。

    BeanUtil Jar包

    《BeanUtil:Apache提供的高效Java反射工具包》 在Java编程中,BeanUtil是一个非常重要的工具包,尤其在处理对象的属性操作时,它扮演着不可或缺的角色。BeanUtil源自著名的开源组织Apache,是其 Commons BeanUtils...

    BeanUtil属性拷贝工具类

    BeanUtil属性拷贝工具类,支持基本的javabean属性拷贝,通过java反射和泛型编程实现了list属性拷贝

    BeanUtil工具类

    BeanUtil 主要用于实体Bean和Map之间的互转,使用方便,是一个不可多得的工具类哦

    BeanUtil1.8 SRC 源码和 jar包

    《BeanUtil1.8源码与jar包解析》 BeanUtil是Apache Commons项目中的一个工具类库,主要用于处理Java Bean的操作,提供了一系列便捷的方法来简化Java Bean的属性操作。在这个"BeanUtil1.8 SRC 源码和 jar包"中,包含...

    BeanUtil.java

    BeanUtil.java

    Servlet中对获取网页表单数据自动给JavaBean赋值的BeanUtil工具类

    本文将深入探讨BeanUtil工具类的工作原理以及如何在Servlet中使用它。 首先,让我们理解一下JavaBean的概念。JavaBean是一种遵循特定规范的Java类,主要用于封装数据。它通常具有公有构造器、公有getter和setter...

    BeanUtil.rar

    BeanUtil需要的jar包和源码文件,commons-beanutils-1.8.0.jar,commons-beanutils-1.8.0-javadoc.jar,commons-beanutils-1.8.0-sources.jar,commons-beanutils-bean-collections-1.8.0.jar,commons-beanutils-...

    BeanUtil_MYSQL_mybaatis_

    在给定的标题"BeanUtil_MYSQL_mybaatis_"中,我们可以推断这是一个关于MyBatis和MySQL结合使用的工具类,可能用于自动根据实体Bean生成SQL语句。描述进一步明确了这个工具的功能,包括自动生成创建表的DDL(Data ...

    beanutil

    beanutil的的jar包 大家顶啦

    改进的BeanUtil包

    修改内容: 1.org.apache.commons.beanutils.converters包下增加了UtilDateConverter类 2.修改了org.apache.commons.beanutils.converters包下的StringConverter类 3.ConvertUtilsBean类中的public void ...

    commons-beanutil-1.7.0-src

    这个"commons-beanutil-1.7.0-src"压缩包包含了BeanUtils库的源代码,版本号为1.7.0,是开发者理解和自定义此库功能的重要资源。以下是关于Apache Commons BeanUtils库及其1.7.0版本的一些关键知识点: 1. **...

    简单的jsp项目需要的jar包,包括MySQL,JDBCTemplte,jQuery,JSTL,c3p0,druid,BeanUtil

    BeanUtil通常指的是Apache Commons BeanUtils库,这是一个实用工具类库,提供了各种方法来操作Java Bean,如属性的复制、类型转换等。在JSP项目中,BeanUtil可以帮助我们方便地处理对象之间的属性赋值,简化对象间的...

    beanutil的jar包打包

    "beanutil的jar包打包" 指的是将Apache Commons BeanUtils相关的类库打包成一个或多个JAR(Java Archive)文件。BeanUtils是Java开发中常用的工具包,它提供了对Java Bean操作的各种便利方法,如属性的设置与获取,...

    common-beanutil源代码

    common-beanutil的源代码 1.8.1

    apache beanutil_1.8.3_API

    beanutil_1.8.3_API

    dom4j jstl beanUtil log4j等jar包

    【标题】中的"dom4j jstl beanUtil log4j等jar包"涉及了四个重要的Java库,它们在开发Java应用程序,特别是Web应用时非常常见。下面将逐一详细介绍这些库的功能、用途以及如何在项目中使用它们。 1. **DOM4J**:这...

Global site tag (gtag.js) - Google Analytics