您的位置:首页 > 编程语言 > Java开发

java注解使用

2017-07-20 17:36 260 查看

语法

声明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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: