import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Inherited @Target({ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Column { String value() default ""; }
import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Inherited //继承 @Target({ElementType.TYPE}) //TYPE 类 METHOD : 方法 @Retention(RetentionPolicy.RUNTIME) //运行时 @Documented public @interface Table { String value() default ""; }
@Table("tb_test") public class TestDao { @Deprecated private String tt; @Column("_id") private String id; @Column("_name") private String name; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class Test { /** * 通过注解组装查询条件,生成查询语句 */ public static String assembleSqlFromObj(Object obj) { Table table = obj.getClass().getAnnotation(Table.class); StringBuffer sbSql = new StringBuffer(); String tableName = table.value(); sbSql.append("select * from " + tableName + " where 1=1 "); Field[] fileds = obj.getClass().getDeclaredFields(); for (Field f : fileds) { String fieldName = f.getName(); String methodName = "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1); try { Column column = f.getAnnotation(Column.class); if (column != null) { Method method = obj.getClass().getMethod(methodName); String value = (String) method.invoke(obj); if (value != null && !value.equals("")) { if (!isnum(column.value()) && !isnum(value)) { // 判断参数是不是 in 类型参数 1,2,3 if (value.contains(",")) { sbSql.append(" and " + column.value() + " in (" + value + ") "); } else { sbSql.append(" and " + column.value() + " like '%" + value + "%' "); } } else { sbSql.append(" and " + column.value() + "=" + value + " "); } } } } catch (Exception e) { e.printStackTrace(); } } return sbSql.toString(); } public static boolean isnum(String target){ if(target.toUpperCase().contains("id")){ return true; } if(target.matches("\\d+")){ return true; } return false; } }
相关推荐
JPA、EJB、Spring零配置等等怎么使用相信各位读者都能掌握,这里主要是说如何自定义自己的注解,自己使用自定义的注解。
自定义Annotation的例子,博客地址:http://blog.csdn.net/yirentianran/article/details/52816764
Java基础复习笔记12Java自定义注解Annotation的使用
本文全面讲述了Java注解Annotation与Java自定义注解及相关内容,大家可以认真看看
使用annotationProcessor插件在编译期创建Java文件 使用在idea中 可以尝试下
java自定义 注解 annotation、标签库tag、监听listener、junit简单测试代码
针对java 初学者或者annotation 初次使用者全面地说明了annotation 的使用方法、定义 方式、分类。...annotation 应用(例如使用自定义annotation 生成javabean 映射xml 文件)还需要进一步的 研究和探讨
@Target:用于描述注解的使用范围,如果自定义注解不存在@Target,则表示该注解可以使用在任何程序元素之上。接收参数ElementType,其值如下: /**接口、类、枚举、注解**/ ElementType.TYPE /**字段、枚举的常量**/...
初学者可以通过以上的说明制作简单的annotation程序,但是对于一些高级的annotation应用(例如使用自定义annotation生成javabean映射xml文件)还需要进一步的研究和探讨。涉及到深入annotation的内容,作者将在后文...
本文针对java初学者或者annotation初次使用...初学者可以通过以上的说明制作简单的annotation程序,但是对于一些高级的annotation应用(例如使用自定义annotation生成javabean映射xml文件)还需要进一步的研究和探讨。
自定义Result,自定义Annotation的实例
java 元注解+拦截器实现自定义注解 @CmwAutoWired:自定义依赖注入 注意:注入的接口和实现类需要在同一包名下,注解的是类则无限制 @FieldAnnotation:自定义属性注解 @MethodAnnotation:自定义方法注解 @...
要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法
学习java自定义注解的小例子,处理运行时注解方法,可以结合博客学习,博客地址: http://blog.csdn.net/liuyonglei1314/article/details/59494503
本篇文章介绍了,Java Annotation(Java 注解)的实现代码。需要的朋友参考下
注解Annotation实现原理与自定义注解例子 每当你创建描述符性质的类或者接口时,一旦其中包含重复性的工 作,就可以考虑使用注解来简化与自动化该过程。 Java提供了四种元注解,专门负责新注解的创建工作
当然它也支持自定义 Java 标注。 网上很多关于 Java Annotation 的文章,看得人眼花缭乱。Java Annotation 本来很简单的,结果说的人没说清楚;弄的看的人更加迷糊。 我按照自己的思路,对 Annotation 进行了...
java注解原始代码自定义Java注释 教程如何在以下位置创建自定义Java注释的源代码
我们在项目开发过程中,可能会对一些公用方法抽成工具类进行使用。如果我们把这些方法再抽成注解的形式,在一些业务情况下是否更灵活一些呢? 示例是纯净的,只引入了需要的架包,启动后直接访问:ip:port/user/test ...
Java记录工具通过实现Java注释包来创建自定义绑定的自定义日志记录工具。