java 反射

利用反射获取sql语句:

重点是:1,首先通过实例对象获取他的class类,

     2,获取表单名称

     3,获取对象中的字段

     4,获取对象中的方法,最后就是拼接字符串

 示例代码:

public class Beanutil {
//初始化的时候就要传入一个实例对象obj
public static String getSelectSQL(Object obj) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, 

InvocationTargetException{
//通过实例对象获取他的class类,命名为classzz
Class<? extends Object> classzz = obj.getClass();
String tableName = classzz.getSimpleName();//获取表单名
StringBuffer sbsql = new StringBuffer();
sbsql.append("Select * from "+tableName+" ");
sbsql.append("where 1=1 ");
Field[] fields = classzz.getDeclaredFields();//获取实例对象的字段
for(Field f:fields){
String methodName = "get"+f.getName().substring(0,1).toUpperCase()+f.getName().substring(1);
Method m = classzz.getDeclaredMethod(methodName);//获取实例对象中的方法
Object o = m.invoke(obj);
if(o instanceof String){
sbsql.append(" and "+f.getName()+"=' "+o+" ' "); }else{
sbsql.append(" and "+f.getName()+" = "+o);
}
}
return sbsql.toString();
}

然后做了一个简单的测试类,传入用户姓名和用户Id

返回的是String类型的sql语句,,如下:

Select * from Userinfo where 1=1  and userId = 111 and userName=' 张三 '  and userPwd = null and useremail = null and reason = null and adress = null

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值