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

java 反射和注解的简单应用

2016-06-13 09:31 645 查看
简单的主键注解:

package com.bj.util;

import java.lang.annotation.ElementType;

import java.lang.annotation.Retention; 

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;

@Target(ElementType.FIELD)

@Retention(RetentionPolicy.RUNTIME)

public @interface PrimaryKey {

    

}

//下面是关联表的注解

package com.bj.util;

import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;

@Target(ElementType.FIELD)

@Retention(RetentionPolicy.RUNTIME)

public @interface NonField {

}

//利用注解来拼接sql语句

public static String getUpdate(Object obj) throws IllegalArgumentException, IllegalAccessException{
Class<? extends Object> classzz = obj.getClass();
String sql = "update "+classzz.getSimpleName()+" set";
String sql2 = "";
String sql3 = " where ";
//获取字段
Field[] fields = classzz.getDeclaredFields();
for(Field f:fields){
f.setAccessible(true);//可以访问private字段的值
Object value = f.get(obj);
//如果该字段具备primaryKey注解
if(f.isAnnotationPresent(PrimaryKey.class)){
if(value instanceof String ){
sql3 +=f.getName()+"=' "+value+" ' ";
}else{
sql3 += f.getName()+" = "+value+" ";
}
}else if(!f.isAnnotationPresent(NonField.class)){//这里利用了NonField关联注解
if(value instanceof String){
  sql2 += f.getName() +"='"+value+"',";
  }else{
  sql2+=f.getName()+"="+value+", ";
  }
}
}
sql2 = sql2.substring(0,sql2.length()-1);
sql = sql+sql2+sql3;
return sql;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: