1.代码demo如下:
package com.itmayiedu.test;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.reflect.Field;
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@interface Property{
String name();
int length() default 0;
}
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@interface Table{
String value();
}
@Table("student_test")
class Student{
@Property(name = "student_id",length = 10)
private int studentId;
@Property(name = "student_name",length = 10)
private String studentName;
@Property(name = "student_age",length = 10)
private String studentAge;
}
public class Test {
public static void main(String[] args) throws Exception {
Class<?> forName = Class.forName("com.itmayiedu.test.Student");
//获取Student类中所有的属性
Field[] fields = forName.getDeclaredFields();
StringBuilder stringBuilder = new StringBuilder("select ");
for (int i = 0;i<fields.length;i++){
Field field = fields[i];
Property property = field.getDeclaredAnnotation(Property.class);
stringBuilder.append(property.name());
if(i<fields.length-1){
stringBuilder.append(",");
}
}
//获取Student类中的Table表名
Table table = forName.getDeclaredAnnotation(Table.class);
stringBuilder.append(" from "+table.value());
System.out.println(stringBuilder.toString());
}
}