java反射 参数为实体_通过Java反射做实体查询

/*** 根据实体查询,将所有的参数封装到实体中查询即可,不可查询为null的信息

*@paramt

*@return*@throwsSecurityException

*@throwsNoSuchMethodException

*@throwsIllegalArgumentException

*@throwsIllegalAccessException

*@throwsInvocationTargetException*/

public List queryAll(T t) throwsSecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException{//存放参数

List paraList = new ArrayList();

List list = new ArrayList();

StringBuffer sb= new StringBuffer("from ");

sb.append(entityClass.getSimpleName()).append(" where 1=1 ");if( t == null){

list=find(sb.toString());returnlist;

}//拼接hql语句//获取类中所有的属性

Field[] fields =t.getClass().getDeclaredFields();for(Field field : fields){//字段名称

String fieldName =field.getName();//方法名称

String methodName = getMethodName(fieldName, "get");//方法

Method method = UserInfo.class.getDeclaredMethod(methodName);//方法的返回值类型

String methodReturnType =method.getReturnType().getSimpleName();

Object obj= null;

obj=method.invoke(t);//返回值为空则跳过

if( obj == null){continue;

}if ("String".equals(methodReturnType)) {

String str=String.valueOf(obj.toString());

sb.append(" and ").append(fieldName).append("= ? ");

paraList.add(str);

}else if ("Date".equals(methodReturnType)) {

Date date=(Date)obj;

sb.append(" and ").append(fieldName).append("= ? ");

paraList.add(date);

}else if ("Integer".equals(methodReturnType)|| "int".equals(methodReturnType)) {

Integer i=Integer.valueOf(obj.toString());

sb.append(" and ").append(fieldName).append("= ? ");

paraList.add(i);

}else if ("Long".equalsIgnoreCase(methodReturnType)) {

Long L=Long.valueOf(obj.toString());

sb.append(" and ").append(fieldName).append("= ? ");

paraList.add(L);

}else if ("Double".equalsIgnoreCase(methodReturnType)) {

Double d=Double.valueOf(obj.toString());

sb.append(" and ").append(fieldName).append("= ? ");

paraList.add(d);

}else if ("Boolean".equalsIgnoreCase(methodReturnType)) {

Boolean b=Boolean.valueOf(obj.toString());

sb.append(" and ").append(fieldName).append("= ? ");

paraList.add(b);

}

}

Query query=createQuery(sb.toString(), paraList.toArray());

list=query.list();returnlist;

}/*** 或实体中属性的get或set方法

*@parammethodName 字段名

*@parammethodType 方法类型:get或set

*@return

*/

privateString getMethodName(String methodName, String methodType){if( methodName == null || "".equals(methodName.trim()) ){return null;

}

StringBuffer sb= newStringBuffer();

sb.append(methodType);

sb.append(methodName.substring(0, 1).toUpperCase());

sb.append(methodName.substring(1));returnsb.toString();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值