/*** 根据实体查询,将所有的参数封装到实体中查询即可,不可查询为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();
}