package com.test.model; import java.io.Serializable; import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="user") public class User implements Serializable { /** * */ private static final long serialVersionUID = -4670967630657562910L; public static int testId = 3; @Id @Column(name="id") private String id ; @Column(name="createDate") private Date createDate; @Column(name="user_name") private String userName; @Column(name="user_password") private String userPassword; public String getId() { return id; } public void setId(String id) { this.id = id; } public Date getCreateDate() { return createDate; } public void setCreateDate(Date createDate) { this.createDate = createDate; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserPassword() { return userPassword; } public void setUserPassword(String userPassword) { this.userPassword = userPassword; } }
测试类
package com.test.fn; import java.beans.PropertyDescriptor; import java.lang.annotation.Annotation; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import javax.persistence.Column; import javax.persistence.Table; import org.apache.commons.beanutils.PropertyUtils; import com.test.model.User; public class UserRead { public static void main(String[] args) { UserRead.readClassInfo(User.class); UserRead.readFieldOfClassInfo(User.class); UserRead.setPropertyTest(User.class); UserRead.propertyTest(User.class); // } //读取类的属性 public static void propertyTest(Class<?> clazz){ System.out.println("/************************************************/"); System.out.println("/** **/"); System.out.println("/** 开始 propertyTest测试 **/"); System.out.println("/** **/"); System.out.println("/** **/"); System.out.println("/************************************************/"); PropertyDescriptor[] properties = PropertyUtils.getPropertyDescriptors(clazz); String propertyName = null; Field f = null; String disPlayName = ""; String name = ""; Method readMethod = null; Method writeMethod = null; for (PropertyDescriptor p : properties) { //获得此特性的编程名称 propertyName = p.getName(); try { f = clazz.getDeclaredField(propertyName); disPlayName = p.getDisplayName(); name = p.getName(); readMethod = p.getReadMethod(); writeMethod = p.getWriteMethod(); System.out.println("disPlayName="+disPlayName); System.out.println("name="+name); if(readMethod!=null){ System.out.println("readMethod="+readMethod.getName()); } if(writeMethod!=null){ System.out.println("writeMethod="+writeMethod.getName()); } } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchFieldException e) { System.out.println("异常了"); System.out.println(" propertyName="+propertyName); e.printStackTrace(); } } } public static void setPropertyTest(Class<?> clazz){ try { Object obj = clazz.newInstance(); PropertyUtils.setProperty(obj, "id", "9999999999"); System.out.println("赋值后的结果id为:"+((User)obj).getId()); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchMethodException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /*** * * 读取某个类的有哪些字段 */ public static void readFieldOfClassInfo(Class<?> clazz){ Field[] fields = clazz.getDeclaredFields(); Field field = null; String fieldName = ""; Class<?> fieldClass = null; int modifier = 0; boolean isColumnPresent = false; Annotation annotation = null; for (int i=0;i<fields.length;i++) { field = fields[i]; fieldName = field.getName(); fieldClass = field.getType(); modifier = field.getModifiers(); if(Modifier.isPublic(modifier )){ System.out.println("-----public"); }else if(Modifier.isPrivate(modifier )){ System.out.println("-----private"); } if(Modifier.isStatic(modifier )){ System.out.println("-----static"); } System.out.println("-----字段类型"+fieldClass.getName()); System.out.println("-----字段名称"+fieldName); System.out.println("-----修饰符:"+modifier); //判断字段有没有出现Column.class类的注解 isColumnPresent = field.isAnnotationPresent(Column.class); if(isColumnPresent){ //展示超类Annotation,此处有意为之 /*** * Column c = field.getAnnotation(Column.class); */ annotation = field.getAnnotation(Column.class); Column c = (Column)annotation; System.out.println("column属性是:"+c.name()); } System.out.println(" "); System.out.println(" "); } } /** *读取class的相关注解 **/ public static void readClassInfo(Class<?> clazz){ String className = clazz.getName(); System.out.println("类名称是:"+className); Class<?> supserClass =clazz.getSuperclass(); System.out.println("父类是:"+supserClass.getName()); //判断类有没有出现某个注解 if(clazz.isAnnotationPresent(Table.class)){ Table table = (Table) clazz.getAnnotation(Table.class); String tableName = table.name(); System.out.println("表名称是:"+tableName); } } }