import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.reflect.Field;
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@interface FiledRef
{
String fieldName();
}
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@interface TableRef
{
String tableName();
}
@TableRef(tableName = "MobDevice")
public class ReflectTest
{
@FiledRef(fieldName = "ID")
private Long id;
@FiledRef(fieldName = "DEVICE_NAME")
private String name;
@FiledRef(fieldName = "DEVICE_CODE")
private String code;
public ReflectTest(Long id, String name, String code)
{
this.id = id;
this.name = name;
this.code = code;
}
public Long getId()
{
return id;
}
public void setId(Long id)
{
this.id = id;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getCode()
{
return code;
}
public void setCode(String code)
{
this.code = code;
}
/**
* @description
* @author zhangml
* @date May 17, 2010 4:39:30 PM
* @param args
*/
public static void main(String[] args)
{
ReflectTest rt = new ReflectTest(new Long(1), "2", "3");
StringBuffer sql = new StringBuffer("");
buildSql(rt, sql);
System.err.println(sql);
}
public static void buildSql(Object obj, StringBuffer sb)
{
Class<? extends Object> clazz = obj.getClass();
Field[] fields = clazz.getDeclaredFields();
if (clazz.isAnnotationPresent(TableRef.class))
{
TableRef tr = (TableRef) clazz.getAnnotation(TableRef.class);
sb.append("SELECT * FROM ");
sb.append(tr.tableName());
}
if (fields != null && fields.length > 0)
{
sb.append(" WHERE ");
for (Field field : fields)
{
try
{
Object value = field.get(obj);
if (value != null && field.isAnnotationPresent(FiledRef.class))
{
FiledRef fr = field.getAnnotation(FiledRef.class);
sb.append(fr.fieldName() + "=" + value);
sb.append(" AND ");
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
int length = sb.length();
sb.delete(length-5, length);
}
}
}
执行结果:SELECT * FROM MobDevice WHERE ID=1 AND DEVICE_NAME=2 AND DEVICE_CODE=3
分享到:
相关推荐
"Java使用注解拼接SQL语句"是一个常见的实践,它使得动态构建SQL查询变得更为简洁和可维护。这种技术通常与ORM(对象关系映射)框架如MyBatis或Hibernate结合使用,但也可以通过自定义处理逻辑实现。 1. **自定义...
### Java Annotation 概述与应用 #### 一、Java Annotation 的定义及作用 Java Annotation(注解)是自 Java 5.0 开始引入的一种语言元素,它为开发者提供了在代码中添加元数据的能力。简单来说,注解就像是对代码...
在Java编程语言中,注解(Annotation)和反射(Reflection)是两个强大的工具,它们能够帮助开发者实现高级功能,如元编程和动态行为控制。在本篇中,我们将深入探讨如何利用注解和反射来生成SQL语句,这对于构建...
Java Annotation 是 JDK5.0 引入的一种元数据机制,它允许程序员在代码中嵌入额外的信息,这些信息可以被编译器、构建工具或运行时系统用来执行特定的任务。Annotation 提供了一种安全、灵活的方式来描述代码的属性...
在Java开发中,Bean对象常用于封装业务数据,而SQL语句则是数据库操作的核心。将Bean对象转换为SQL语句可以简化数据操作,提高代码的可读性和可维护性。本示例通过Annotation和反射技术来实现这一目标,旨在帮助...
2. 自动化生成SQL:一些ORM(对象关系映射)库,如Hibernate(Java)、SQLAlchemy(Python)、Entity Framework(C#)等,可以基于模型类自动构建SQL语句。它们会根据模型的属性生成INSERT、SELECT、UPDATE、DELETE...
Java 注解(Annotation)是Java语言提供的一种元编程机制,它允许程序员在源代码的各个元素(如类、方法、变量等)上添加信息。这些信息可以被编译器或运行时系统用来验证代码、执行特定操作或者提供额外的运行时...
《Java Annotation手册》 在Java编程语言中,注解(Annotation)是一种元数据,它提供了在编译时或运行时处理代码的一种方式。通过注解,开发者可以向编译器或JVM提供有关代码的附加信息,而这些信息通常不直接影响...
Java的`javax.annotation.processing.Processor`接口定义了注解处理器的规范。 5. 使用注解 注解可以应用于类、方法、字段、参数、构造函数、包等不同级别。例如: ```java @MyAnnotation("Hello, World!") ...
Java注解(Annotation)是Java语言的一个重要特性,它为元数据提供了强大的支持。元数据是关于数据的数据,可以提供额外的信息,这些信息虽然不是程序运行所必需的,但能够帮助编译器、JVM(Java虚拟机)或工具更好...
4. **代码生成**:一些工具(如Hibernate)会根据注解生成数据库映射或SQL语句。 5. **测试**:JUnit框架中的`@Test`注解标识测试方法。 ### 自定义注解 自定义注解需要定义一个新的注解类型,并可以包含自定义的...
MyBatis是一款流行的Java持久层框架,用于简化数据库操作,其特点是将SQL语句与Java代码分离,使得SQL和业务逻辑更加清晰。本项目提供的"mybatis自动sql生成插件源码"则进一步提升了开发效率,通过拦截器...
Java Annotation,也称为注解,是Java编程语言中的一种元数据机制,用于向编译器、JVM或工具提供有关代码的附加信息。这些信息不直接影响代码的执行,但可以被编译器或运行时环境用来执行特定的操作,如代码分析、...
如果你想知道java annotation是什么?你可以看看
Java 注解(Annotation)是 Java 语言的一种元数据机制,它允许程序员在源代码中嵌入额外的信息。这些信息可以被编译器、IDE、JVM 或其他工具使用,以增强代码的功能,简化开发,提高可维护性。注解并不直接影响代码...
Java annotation 什么是java annotation?annotation 的7种标注类型。nnotation提供了一条与程序元素关联任何信息或者任何元数据(metadata)的途径。从某些方面看,annotation就像修饰符一样被使用,并应用于包、...
Java注解(Annotation)是Java语言的一个重要特性,它为元数据提供了强大的支持。元数据是一种描述数据的数据,可以提供有关代码的附加信息,而这些信息并不直接影响代码的执行。在Java中,注解用于向编译器、JVM或...
【Java Annotation手册】 Java Annotation是Java编程语言中的一个重要特性,它允许程序员在代码中嵌入元数据,这些元数据不直接影响程序的运行,但可以被编译器、工具或运行时环境用来验证代码、生成文档、实现依赖...
1. **Java SQL**:在代码中直接编写SQL语句,灵活且直观,适用于对SQL有高度控制需求的情况。 2. **XML SQL**:通过XML文件配置SQL,将业务逻辑和数据访问层分离,有利于代码维护和团队协作。 3. **Annotation SQL**...
Java 注解(Annotation)是Java语言的一个重要特性,它为代码提供元数据,即关于代码的信息,但这些信息不直接影响程序的运行。注解在Java中主要用于编译器检查、运行时处理、框架生成元数据等场景。本篇将深入探讨...