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); } }
相关文章推荐
- java注解使用及使用注解实现观察者模式
- Java注解的使用概括
- java注解使用redis缓存,@Aspect aop @interface
- java注解:@Deprecated(不建议使用的,废弃的);@SuppressWarnings(忽略警告,达到抑制编译器产生警告的目的)
- 探索MVP在Android中使用
- ExtremeTable使用指南:Limit指南
- .NET Compact Framework使用P/Invoke服务
- 使用 eAccelerator加速PHP代码的方法
- c++中宏的使用
- Asp.Net MVC 4 Web API 中的安全认证-使用OAuth
- Chrome 使用心得之 开发者快捷键大全V1.0
- 使用NetBeans6开发OSGi应用(3)——整合Knopflerfish![88250原创]
- 使用Loadrunner测试Appeon Web应用时参数化的考虑
- 在.NET程序中正确使用String类型
- [转贴]ParameterizedThreadStart,ThreadStart的使用,线程Thread传参数
- GreenDao的使用心得
- Python3使用requests包抓取并保存网页源码的方法
- JSP中使用JDBC驱动访问MS SQL SERVER数据库的例子
- 使用总线技术
- WRTNode开发板上使用jtag调试总结