博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
反射应用!
阅读量:5276 次
发布时间:2019-06-14

本文共 3021 字,大约阅读时间需要 10 分钟。

public static String getUpdate(Object obj) throws IllegalArgumentException, IllegalAccessException{

Class<? extends Object>classll=obj.getClass();
String sql="Update "+classll.getSimpleName()+" set ";
String sql2=" ";
String sql3=" where ";
Field[] field=classll.getDeclaredFields();
for(Field f:field){
f.setAccessible(true);
Object value = f.get(obj);
if(f.isAnnotationPresent(PrimaryKey.class)){
if(value instanceof String){
sql3 +=f.getName()+"='"+value+"'";
}else{
sql3 +=f.getName()+"="+value+"";
}
}else if(!f.isAnnotationPresent(NonField.class)){
if(value instanceof String){
sql2 +=f.getName()+"='"+value+"',";
}else{
sql2 +=f.getName()+"="+value+", ";
}
}
}
sql2 = sql2.substring(0,sql2.length()-2);
sql=sql+sql2+sql3;
return sql;
}

 

Userinfo u=new Userinfo();

u.setUsername(" 成都");
u.setUserpwd(" 张山");
u.setUserquan("123");
String userInfoSQL = null;
try {
userInfoSQL = BeanUtil.getUpdate(u);
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(userInfoSQL);

 

 

package com.gxa.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 {
}

 

//通过反射区获取相应的类的一些定义

Class classzz=Person.class;
//另外一种获取Class对象的方法
Person p=new Person();
Class classzz2=p.getClass();
System.out.println("类的名称:"+classzz.getSimpleName());
Field[] fields=classzz.getDeclaredFields();//获取定义的字段
for(Field f : fields){
Class c=f.getType();//字段
if(c.getPackage()!=null){
if(c.getPackage().getName().equals("com.gxa.bj.test")){
System.out.println(c.getPackage().getName());
System.out.println("字段类型:"+c.getName());
System.out.println("该字段的名字:"+f.getName());
}
}
}

 

 

public static void main(String[] args) {

// TODO Auto-generated method stub
Person p=new Person();
p.setAge(12);
p.setName(" 张三 ");
Class<? extends Object> classzz = p.getClass();
//通过反射去获取字段的值
Field[] f = classzz.getDeclaredFields();
for(Field field :f){
String methodName="get"+field.getName().substring(0,1).toUpperCase()+field.getName().substring(1);
try {
Method m=classzz.getDeclaredMethod(methodName);
Object o = null;
try {
o = m.invoke(p);
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(o!=null){
System.out.println("方法名:"+methodName+",方法值:"+o);
}
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

}

转载于:https://www.cnblogs.com/kldsw/p/5579434.html

你可能感兴趣的文章
mysqladmin 修改和 初始化密码
查看>>
字符串
查看>>
vue2.x directive - 限制input只能输入正整数
查看>>
实现MyLinkedList类深入理解LinkedList
查看>>
自定义返回模型
查看>>
C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 客户端多网络支持
查看>>
HDU 4122
查看>>
Suite3.4.7和Keil u3自带fx2.h、fx2regs.h文件的异同
查看>>
打飞机游戏【来源于Crossin的编程教室 http://chuansong.me/account/crossincode 】
查看>>
[LeetCode] Merge Intervals
查看>>
【翻译自mos文章】当点击完 finishbutton后,dbca 或者dbua hang住
查看>>
Linux编程简介——gcc
查看>>
2019年春季学期第四周作业
查看>>
MVC4.0 利用IActionFilter实现简单的后台操作日志功能
查看>>
rotate the clock
查看>>
bugku 变量
查看>>
Python 环境傻瓜式搭建 :Anaconda概述
查看>>
数据库01 /Mysql初识以及基本命令操作
查看>>
数据库02 /MySQL基础数据类型以及多表之间建立联系
查看>>
Python并发编程04/多线程
查看>>