一、定义注解Table用来映射表名
@Retention(RetentionPolicy.RUNTIME)
public @interface Table {
String value();
}
二、定义注解 Property用来映射字段
@Retention(RetentionPolicy.RUNTIME)
public @interface Property {
String name();
int length();
}
三、实体类引用自定义注解
@Table("t_user")
class User{
@Property(name="user_name",length=10)
private String userName;
@Property(name="age",length=10)
private Integer age;
}
四、实现查询全表
Class<?> forName = Class.forName("com.zhq.User");
//获取类注解上的表名
Table table = forName.getAnnotation(Table.class);
String tableName = table.value();
//获取属性属性注解
Field[] declaredFields = forName.getDeclaredFields();
StringBuffer sql=new StringBuffer();
sql.append("select ");
for (int i = 0; i < declaredFields.length; i++) {
Property property = declaredFields[i].getAnnotation(Property.class);
String name = property.name();
sql.append(name);
if(i==(declaredFields.length-1)){
sql.append(" from ");
}else{
sql.append(",");
}
}
sql.append(tableName);
System.out.println(sql.toString());
结果: