首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

读取种映射2

2012-06-26 
读取类映射2读取属性及其特点public static void main(String [] arg){Class clazz TestAnnotation.clas

读取类映射2

读取属性及其特点

public static void main(String [] arg){Class clazz = TestAnnotation.class;//testClass.getMap<String, FieldDescriptor> map = fieldDescriptorMap.get(clazz.getName()) ;if (map != null) {System.out.println("不是 null");}map = new HashMap<String, FieldDescriptor>();Class<?> c = clazz;Field f = null;FieldDescriptor fd = null;String propertyName = null;System.out.println("ObjectClass = "+Object.class.getName());while (c != null && !c.getName().equals(Object.class.getName())) {/*** * getPropertyDescriptors(Class c): * Retrieve the property descriptors for the specified class, introspecting and caching them the first time a particular bean class is encountered. * Does not work with DynaBeans. */PropertyDescriptor[] properties = PropertyUtils.getPropertyDescriptors(c);for (PropertyDescriptor p : properties) {try {//获得此特性的编程名称propertyName = p.getName();System.out.println("属性名为:"+propertyName);/** * getDeclaredField(propertyName) * 返回一个 Field 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明字段。 * propertyName 参数是一个 String,它指定所需字段的简称。注意,此方法不反映数组类的 length 字段。 */f = c.getDeclaredField(propertyName);if (f != null) {fd = new FieldDescriptor();fd.setField(f);/** * p.getReadMethod() * 获得应该用于读取属性值的方法 */fd.setReadable(p.getReadMethod() != null);/** * p.getWriteMethod() * 获得应该用于写入属性值的方法 */fd.setWriteable(p.getWriteMethod() != null);}if (!map.containsKey(propertyName)) {map.put(propertyName, fd);}} catch (Exception e) {}}c = c.getSuperclass();}System.out.println("end");}

?读取属性及方法应用3

import java.beans.PropertyDescriptor;import java.lang.reflect.Method;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Timestamp;import java.util.Date;import org.apache.commons.beanutils.BeanMap;import org.apache.commons.beanutils.PropertyUtils;import com.company.plat.persistence.util.BaseUtils;public class BeanMapTest {public static void main(String[] args) {TestAnnotation bean = null;BeanMap beanMap = null;Class<?>[] methodParaTypes = null;Method method = null; try { bean = TestAnnotation.class.newInstance(); bean.setAge(11) ; bean.setBirthday(new Date()); bean.setId(1); bean.setName("测试"); bean.setWifeName("秘密");  beanMap =  new BeanMap(bean); // PropertyUtils.setProperty(record, propertyName, value); PropertyDescriptor[] properties = PropertyUtils.getPropertyDescriptors(TestAnnotation.class); String propertyName; for(PropertyDescriptor propertie : properties ) {//获得此特性的编程名称propertyName = propertie.getName();System.out.println("属性名:"+propertyName);method = null;if (propertyName != null) {//获取set方法    method = beanMap.getWriteMethod(propertyName);}if (propertyName == null || method == null) {    continue;}methodParaTypes = method.getParameterTypes();if (methodParaTypes == null || methodParaTypes.length != 1) {    continue;}//判断是否是基本数据类型if (BaseUtils.isBaseType(methodParaTypes[0])){System.out.println(methodParaTypes[0].getName());}//设置值//PropertyUtils.setProperty(bean, propertyName, null); }   } catch (InstantiationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} } public static <T> Object  getValueData(ResultSet rs, String column,    Class<T> propertyClass) throws SQLException{  String className = propertyClass.getName(); Object value = null;if (!BaseUtils.isBaseType(propertyClass))    throw new SQLException("Cannot Recognise the data Type, column="    + column + ", type=" + className);if ("java.lang.String".equals(className)) {    value = rs.getString(column);} else if ("int".equals(className)|| "java.lang.Integer".equals(className)) {    value = new Integer(rs.getInt(column));} else if ("float".equals(className)|| "java.lang.Float".equals(className)) {    value = new Float(rs.getFloat(column));        } else if ("double".equals(className)|| "java.lang.Double".equals(className)) {    value = new Double(rs.getDouble(column));} else if ("long".equals(className)|| "java.lang.Long".equals(className)) {    value = new Long(rs.getLong(column));} else if ("short".equals(className)|| "java.lang.Short".equals(className)) {    value = new Short(rs.getShort(column));} else if ("byte".equals(className)|| "java.lang.Byte".equals(className)) {    value = new Byte(rs.getByte(column));} else if ("boolean".equals(className)|| "java.lang.Boolean".equals(className)) {    value = new Boolean(rs.getBoolean(column));} else if ("java.util.Date".equals(className)) {    Timestamp t = rs.getTimestamp(column);    if (t == null) {value = null;    } else {value = new java.util.Date(t.getTime());    }} else if ("java.sql.Timestamp".equals(className)) {    value = rs.getTimestamp(column);} else if ("java.sql.Date".equals(className)) {    Timestamp t = rs.getTimestamp(column);    if (t == null) {value = null;    } else {value = new java.sql.Date(t.getTime());    }} else if ("java.lang.BigDecimal".equals(className)) {    value = rs.getBigDecimal(column);} else {    throw new SQLException("Cannot Recognise the data Type, column="    + column + ", type=" + className);}return value; }}

?

热点排行