All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.ext_ext.mybatisext.helper.PropertyHelper Maven / Gradle / Ivy

package com.ext_ext.mybatisext.helper;

import java.io.Serializable;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;

import org.apache.ibatis.logging.Log;
import org.apache.ibatis.logging.LogFactory;
import org.apache.ibatis.reflection.MetaClass;

/**
 * 保留list和bean的某些属性值
 * 

* * @author 宋汝波 * @date 2015年3月13日 * @version 1.0.0 */ @SuppressWarnings("rawtypes") public class PropertyHelper { private static Log logger = LogFactory.getLog(PropertyHelper.class); @SuppressWarnings("unchecked") public static T getProperty(Object obj, String propertyName) { if (obj == null) { return null; } MetaClass metaClass = MetaClass.forClass(obj.getClass()); try { return (T) metaClass.getGetInvoker(propertyName).invoke(obj, new Object[] {}); } catch (Exception e) { logger.error("", e); } return null; } public static Map getPropertiesValue(Object obj) { MetaClass metaClass = MetaClass.forClass(obj.getClass()); Map result = new HashMap(); try { String[] getters = metaClass.getGetterNames(); for (String getter : getters) { Object value = metaClass.getGetInvoker(getter).invoke(obj, new Object[] {}); // 过滤掉null值 if (value != null) { result.put(getter, value); } } } catch (Exception e) { logger.error("", e); } return result; } public static Map> getPropertiesType(Class cls) { MetaClass metaClass = MetaClass.forClass(cls); Map> result = new HashMap>(); String[] setters = metaClass.getSetterNames(); for (String setter : setters) { Class value = metaClass.getSetterType(setter); result.put(setter.toUpperCase(Locale.ENGLISH), value); } return result; } public static String[] getProperties(Class cls) { MetaClass metaClass = MetaClass.forClass(cls); String[] getters = metaClass.getGetterNames(); return getters; } public static void map2Object(Map map, Object newObj) { MetaClass metaClass = MetaClass.forClass(newObj.getClass()); try { String[] setter = metaClass.getSetterNames(); for (String set : setter) { Object obj = map.get(set.toLowerCase()); metaClass.getSetInvoker(set).invoke(newObj, new Object[] { obj }); } } catch (Exception e) { logger.error("", e); } } /** * 保留属性值 *

* * @param list * @param property */ public static void reserveProperty(List list, String... property) { if (list == null || list.size() == 0) { return; } try { Set setProperty = new HashSet(Arrays.asList(property)); MetaClass metaClass = MetaClass.forClass(list.get(0).getClass()); String[] setter = metaClass.getSetterNames(); for (String set : setter) { // 不保留这些属性 if (!setProperty.contains(set)) { for (Object obj : list) { metaClass.getSetInvoker(set).invoke(obj, new Object[] { null }); } } } } catch (Exception e) { logger.error("", e); } } /** * 保留属性值 *

* * @param object * @param property */ public static void reserveProperty(Serializable object, String... property) { if (object == null) { return; } try { Set setProperty = new HashSet(Arrays.asList(property)); MetaClass metaClass = MetaClass.forClass(object.getClass()); String[] setter = metaClass.getSetterNames(); for (String set : setter) { // 不保留这些属性 if (!setProperty.contains(set)) { metaClass.getSetInvoker(set).invoke(object, new Object[] { null }); } } } catch (Exception e) { logger.error("", e); } } /** * 对象数据拷贝,可以全部赋值,包括null *

* * @param oldObj * @param newObj * @param isAll */ public static void copyProperty(Object oldObj, Object newObj, boolean isAll) { if (oldObj == null || newObj == null) { throw new RuntimeException("对象不能为null"); } try { MetaClass oldClass = MetaClass.forClass(oldObj.getClass()); MetaClass newClass = MetaClass.forClass(newObj.getClass()); String[] getter = oldClass.getGetterNames(); String[] setter = newClass.getSetterNames(); Set getProperty = new HashSet(Arrays.asList(getter)); for (String set : setter) { if (getProperty.contains(set)) { Object result = oldClass.getGetInvoker(set).invoke(oldObj, null); if (isAll) { newClass.getSetInvoker(set).invoke(newObj, new Object[] { result }); } else { if (result != null) { newClass.getSetInvoker(set).invoke(newObj, new Object[] { result }); } } } } } catch (Exception e) { logger.error("", e); } } /** * 数据拷贝,默认只拷贝不是null的值,只要有相同属性就可以进行赋值操作 *

* * @param oldObj * @param newObj */ public static void copyProperty(Object oldObj, Object newObj) { copyProperty(oldObj, newObj, false); } public static void main(String[] args) { } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy