使用 java 自定义注解 模拟 ORM 框架注解版本

需求:使用 java 自定义注解 模拟 ORM 框架注解版本生成 sql 语句
1.定义自定义表映射注解

/**
 * 
 * @classDesc: 功能描述:(自定义表映射注解 )
 * @author: 余胜军
 * @createTime: 2017年8月27日 上午12:09:53
 * @version: v1.0
 * @copyright:上海每特教育科技有限公司
 */
@Target(value = { ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
public @interface SetTable {

	/**
	 * 
	 * @methodDesc: 功能描述:(对应数据库表名称)
	 * @author: 余胜军
	 * @param: @return
	 * @createTime:2017年8月27日 上午12:10:49
	 * @returnType:@return String
	 * @copyright:上海每特教育科技有限公司
	 */
	String value();

}

1.定义字段属性映射注解

/**
 * 
 * @classDesc: 功能描述:(定义字段属性)
 * @author: 余胜军
 * @createTime: 2017年8月27日 上午12:13:32
 * @version: v1.0
 * @copyright:上海每特教育科技有限公司
 */
@Retention(RetentionPolicy.RUNTIME)
public @interface SetProperty {

	/**
	 * 
	 * @methodDesc: 功能描述:(字段名称)
	 * @author: 余胜军
	 * @param: @return
	 * @createTime:2017年8月27日 上午12:14:02
	 * @returnType:@return String
	 * @copyright:上海每特教育科技有限公司
	 */
	String name();

	/**
	 * 
	 * @methodDesc: 功能描述:(长度)
	 * @author: 余胜军
	 * @param: @return
	 * @createTime:2017年8月27日 上午12:14:25
	 * @returnType:@return int
	 * @copyright:上海每特教育科技有限公司
	 */
	int leng();

}

3.java 代码

/**
*
* @classDesc: 功能描述:(使用 java 自定义注解 模拟 ORM 框架注解版本 )
* @author: 余胜军
* @createTime: 2017 年 8 月 27 日 上午 12:41:52
* @version: v1.0
* @copyright:上海每特教育科技有限公司
*/
public class Main {

public static void main(String[] args) throws ClassNotFoundException {
    // 1.反射class
    Class<?> classForName = Class.forName("com.entity.Sudent");
    // 2.获取表名称注解F
    SetTable setTable = classForName.getAnnotation(SetTable.class);
    // 3.获取所有的成员属性
    Field[] declaredFields = classForName.getDeclaredFields();
    StringBuffer sf = new StringBuffer();
    sf.append(" select ");
    String fromName = setTable.value();
    for (int i = 0; i < declaredFields.length; i++) {
       Field field = declaredFields[i];
       // 4.属性字段
       SetProperty sb = field.getAnnotation(SetProperty.class);
       sf.append(" " + sb.name() + " ");
       if (i == declaredFields.length - 1) {
         sf.append(" from ");
       } else {
         sf.append(" , ");
       }
    }
    sf.append(" " + fromName);
    System.out.println(sf.toString());
}

}
```