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); } } }
相关推荐
Java自定义注解是Java语言中的一个重要特性,它允许我们创建自己的元数据,为代码提供额外的信息。在Java中,注解(Annotation)主要用于编译器检查、代码生成、运行时处理等方面。本文将深入探讨如何通过反射机制来...
为了提高开发效率,一种常见的解决方案是实现一个工具或框架,能够自动从数据库读取字段信息,并自动生成对应的Java代码。 这个工具或功能的核心思想是元数据映射(Metadata Mapping),它将数据库中的表结构映射到...
在Java编程中,注解(Annotation)是一种元数据,它提供了在代码中插入信息的方式,这些信息可以被编译器或运行时环境读取。反射(Reflection)是Java的一个强大特性,允许程序在运行时检查类、接口、字段和方法等...
Java Bean遍历是获取并操作Bean对象属性的过程,而注解是现代Java中用于元数据的一种方式,可以给Bean的属性添加额外的信息或行为。 在给定的标题"Java Bean 遍历和使用注解给Bean的属性添加属性值"中,我们可以...
在这个过程中,你可以创建一个Excel模板,定义每个字段的属性,如字段名、类型、长度等,然后使用POI读取这些信息,自动生成对应的Java类。 首先,我们需要在Java项目中引入Apache POI的依赖。在Maven工程中,可以...
javabean中有100个属性字段,想要在前端页面获取这100个字段和字段对应的中文名称,如用户名称(username),密码(password),可以动态的获取到中文名称和属性字段,并返回前端页面,本例只实现动态解析功能
在Java编程中,注解(Annotation)是一种元数据,它提供了在代码中嵌入信息的方式,这些信息可以被编译器、JVM或其他工具读取并处理。在JavaBean中使用注解,可以极大地简化对象与数据库之间的映射,使得数据访问...
通过在类的字段上使用注解,我们可以指定字段与Excel单元格之间的对应关系。例如,我们可以使用`@Cell`注解来标记字段,并通过参数指定单元格的编号或名称。 ```java public class User { @Cell(1) private ...
实体类通常包含属性(字段)和getter/setter方法,以及可能的JPA或Hibernate注解。例如,一个简单的模板可能如下: ```template public class ${tableName} { private ${columnName} ${fieldName}; // Getter & ...
java注解实现通用Excel中文表格转实体对象列表,支持中文表头,在Excel数据导入使用的...基于注解实现的支持中文表头的读取Excel数据并转换为实体对象列表的工具类,使用该工具类可将Excel数据转换成任意实体任意字段
这个注解有两个主要部分:`@Target(ElementType.FIELD)`表示该注解只能应用于字段,`@Retention(RetentionPolicy.RUNTIME)`意味着注解会在运行时保留,这样我们可以在序列化或反序列化过程中读取到它。 接下来,...
在使用Jackson库(如`@JsonAutoDetect`、`@JsonIgnore`、`@JsonIgnoreProperties`注解)或Gson库(如`@Expose`、`@SerializedName`)进行JSON序列化时,也可以排除特定属性。 - **Jackson示例**: ```java @...
在Java编程中,元数据(Metadata)是指关于数据的数据,它提供有关文件、数据库记录、类、方法等的附加信息,但不直接构成这些实体的实际内容。元数据可以帮助理解和处理这些对象,例如,图片的元数据可能包含拍摄...
Java自定义注解是Java平台提供的一种元数据机制,它允许程序员在代码中添加额外的信息,这些信息可以被编译器、JVM或其他工具在编译时或运行时读取,用于实现各种功能,如代码生成、代码分析、依赖注入等。...
基于注解的Java操作Excel是一种高效且简洁的方式,它允许开发者通过在代码中添加特定的注解来定义和执行Excel相关的操作。这种方式极大地简化了代码,提高了可读性和可维护性。 首先,我们要理解注解(Annotation)...
验证工具类需要能够读取到类上的注解信息,并根据这些信息执行相应的验证逻辑。具体来说,包括以下几个方面: - **枚举定义**:定义枚举`VerifyWay`,用于表示不同的验证策略,比如`GreaterThan`、`LessThan`、`...
### Spring Java注解、元注解与自定义注解详解 #### 一、Java注解简介 在深入了解Spring框架中的注解应用之前,我们首先需要对Java注解有一个基本的认识。Java注解(Annotation)是一种元数据,可以为程序代码添加...
本文将深入探讨Java注解的API及其使用。 1. **注解的基本概念** - 注解(Annotation)是Java SE 5.0引入的新特性,它是一种用于向编译器或JVM提供元数据的方式。 - 注解通过`@`符号后跟注解类型的名称来应用,如`...
Java注解技术是Java平台中一个非常重要的特性,它为元数据提供了强大的支持,使得开发者能够在代码中嵌入额外的信息,这些信息可以被编译器、JVM或第三方工具读取和处理。在本视频教程中,我们将深入探讨Java注解的...
在数据库类的上下文中,我们通常使用ORM框架的特定注解来定义类和字段的数据库属性。例如,如果我们使用Hibernate,我们可以使用以下注解: 1. `@Entity`: 这个注解标记一个Java类为实体类,表示它将对应数据库中的...