Java自定义注解入门举例
来源:互联网 发布:仿360网盘源码 编辑:程序博客网 时间:2024/05/07 12:33
转载请注明出处:http://blog.csdn.net/Hello_Chillax/article/details/48805387
学Android也有一年多了,打算分出一半的精力来学习JavaWeb的开发。
JavaWeb中第一个接触的框架就是SpringMVC了,其中用到了“注解”这个东西。作为入门,自己写了个例子,记录一下。
我们打算写一个quary(Filter filter) 函数来根据model生成一个SQL语句。
首先,Filter.java
/** * Created by Xiao on 2015/9/29. */@Table("User")public class Filter { @Column("name") private String name; @Column("pwd") private String pwd; @Column("age") private String age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public String getAge() { return age; } public void setAge(String age) { this.age = age; }}
接下来,Table.java && Column.java
/** * Created by Xiao on 2015/9/29. */@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Inherited@Documentedpublic @interface Table { String value();}
/**
* Created by Xiao on 2015/9/29.
*/
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Column {
String value();
}
最后,测试类 Test.java
/** * Created by Xiao on 2015/9/29. */public class Test { public static void main(String[] args) { Filter filter = new Filter(); filter.setName("肖哥"); filter.setAge("23"); System.out.println(quary(filter)); } public static String quary(Filter filter) { StringBuilder sb = new StringBuilder(); Class c = filter.getClass(); if (!c.isAnnotationPresent(Table.class)) { return null; } sb.append("select * from " + ((Table) c.getAnnotation(Table.class)).value()).append(" where "); for (Field field : c.getDeclaredFields()) { Column column = field.getDeclaredAnnotation(Column.class); field.setAccessible(true); try { Object value = field.get(filter); if (value == null || (value.getClass() == Integer.class && (Integer) value == 0)) continue; sb.append(column.value()).append("=").append(field.get(filter)).append(" and "); } catch (Exception e) { e.printStackTrace(); } field.setAccessible(false); } sb.replace(sb.lastIndexOf(" and "),sb.length(),""); return sb.toString(); }}
输出结果:
select * from User where name=肖哥 and age=23
完成。
总结:这个小例子说明了如何自定义注解。以及提供了一个应用场景。
其中涉及到了Reflect的知识,还算比较有参考价值。
0 0
- Java自定义注解入门举例
- Java自定义注解入门
- java自定义注解入门
- Java自定义注解入门
- java 自定义注解(Annotation)入门
- Java:注解(Annotation)自定义注解入门
- Java注解 (Annotation)自定义注解入门
- Java:注解(Annotation)自定义注解入门
- JAVA 注解(Annotation)自定义注解入门
- java注解(Annotation)自定义注解入门
- java 注解(Annotation)自定义注解入门
- Java注解(Annotation)自定义注解入门
- Java注解(Annotation)自定义注解入门
- java 注解:注解(Annotation)自定义注解入门
- java注解中的4种元注解+自定义注解入门
- Java注解(一):注解介绍及自定义注解入门
- java自定义注解入门(1)
- java自定义注解入门(2)
- HR必看的十本书(转载)
- Ubuntu .deb包安装方法
- Hibernate标识符属性(主键)生成策略全析
- Python之下载安装以及第一个例子
- clean code - 类
- Java自定义注解入门举例
- freeswitch呼叫慢的问题
- redhat 装载 fcitx
- js中替换字符串(批量替换)
- OpenCV学习笔记__角点检测
- Unity3D 模型分块
- wireshark过滤语法总结
- Java核心技术第3章(6)
- Kafka深度解析