java注解使用

来源:互联网 发布:最新拍摄软件 编辑:程序博客网 时间:2024/06/14 02:24

语法

  • 声明public @interface
  • 成员以无参无异常方式声明
  • 可以用default为成员指定一个默认值
  • 如果注解只有一个成员,则成员名必须为value(),在使用时可以忽略成员名和赋值号(=)
  • 注解类可以没有成员,没有成员的注解为标识注解

元注解

+ @Target- Annotation所修饰的对象范围(Type,Field,Method)+ @Retention- Annotation被保留的时间长短+ @Inherited- 某个被标注的类型是被继承的,实用类的子类继承+ @Documented- javadoc此类的工具文档化

使用

本例使用注解的方式生成SQL。
@Target(TYPE)@Retention(RUNTIME)public @interface TableEntity {    /**     * The name of the table.     * <p> Defaults to the entity name.     */    String value() default "";}
/** * Title:Column.java * Description: 表字段映射 * * @author zhuyang * @version 1.0 2017/7/20 */@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)public @interface Column {    String value() default "";}
package com.annotation;/** * Title:Student.java * Description:实体类 * * @author zhuyang * @version 1.0 2017/7/20 */@TableEntity("stu")public class Student {    @Column("name")    private String name;    @Column(value = "password")    private String password;    @Column(value = "age")    private Integer age;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    public Integer getAge() {        return age;    }    public void setAge(Integer age) {        this.age = age;    }}
package com.annotation;import java.lang.reflect.Field;/** * Title:QueryGenerator.java * Description:SQL生成器 * * @author zhuyang * @version 1.0 2017/7/20 */public class QueryGenerator {        public String generatQuery(Class<?> entityClass){            StringBuffer sql = new StringBuffer("Select ");            //get type annotation(table)            TableEntity tableEntity = entityClass.getAnnotation(TableEntity.class);            //table name            String tableName = tableEntity.value();            Field[] fields = entityClass.getDeclaredFields();            for(Field f : fields){//iterate field and construct sql                Column column= f.getAnnotation(Column.class);                String columnName = column.value();                sql.append(columnName).append(",");            }            sql.append(" FROM "+tableName);            return sql.toString();        }}
public class Main {    public static void main(String []s){        QueryGenerator queryGenerator = new QueryGenerator();        String  sql = queryGenerator.generatQuery(Student.class);        System.out.println(sql);    }}
原创粉丝点击