问一个查询问题,困扰我很久了。大哥大姐帮帮忙。
现在需做一个查询。 
 比如有3个条件。 
 1,2,3 
 if(1!=null||2!=null||3!=null) 
    { 
       if(1!=null||2!=null) 
    { 
       ..... 
    }else   if(1!=null||3!=null) 
       { 
             ... 
       }else   if(2!=null||3!=null){ 
          ......... 
       }else   if(1){ 
          .......... 
       }else   if(2){ 
          ........ 
       }else   if(3){ 
          ......... 
    } 
 } 
 有三个条件只能这么判断吗? 
 1,2,3 
 1,2 
 1,3 
 2,3 
 1 
 2 
 3   
 如果我有10个条件呢? 
 是不是就要写 
 1,2,3,4,5,6,7,8,9,10   
 晕,那就大了,有什么好办法,大家给支个招
------解决方案--------------------这样啊,你把条件做成一个查询类 
 public List <T>  getListByQuery(Object query) 
 			throws 
IllegalAccessException, 
IllegalArgumentException { 
 		// TODO Auto-generated method stub 
 		if (query == null) { 
 			return this.getList(); 
 		} else { 
 			String queryString = prepareQueryString(query); 
 			return 
getHibernateTemplate().find(queryString); 
 		} 
 	}   
 	/** 
 	 * 利用反射机制返回查询字符串 
 	 *  
 	 * @param query 
 	 *            查询参数 
 	 * @return 查询字符串 
 	 */ 
 	protected String prepareQueryString(Object query) 
 			throws IllegalAccessException, IllegalArgumentException { 
 		StringBuffer sb = new StringBuffer(); 
 		if(query == null){ 
 			return  "from  " + type.getName(); 
 		}else{ 
 			Class tempClass = query.getClass(); 
 			sb.append( "from  "); 
 			sb.append(type.getName() +  " as _qc "); 
 			sb.append( " where 1=1 "); 
 			Field[] fields = tempClass.getDeclaredFields(); 
 			for(Field f : fields){ 
 				if(f.get(query) != null){ 
 					sb.append( " and _qc. "); 
 					sb.append(f.getName() +  " like  ' "); 
 					sb.append(f.get(query) +  "% ' "); 
 				} 
 			} 
 		} 
 		return sb.toString(); 
 	} 
 } 
 这个是我以前写得,用的反射,其中的type声明为 
 Class <T>  type; 
 public class BaseDaoHibernate <T, PK extends Serializable>  extends 
 		HibernateDaoSupport implements BaseDao <T, PK>  {   
 	private Class <T>  type;   
 	public BaseDaoHibernate(Class <T>  type) { 
 		this.type = type; 
 	}   
 	/* 
 	 * (non-Javadoc) 
 	 *  
 	 * @see edu.zsu.fbfz.clic.dao.BaseDao#create(java.lang.Object) 
 	 */ 
 	public PK create(T newInstance) { 
 		return (PK) getHibernateTemplate().save(newInstance); 
 	}   
 	/* 
 	 * (non-Javadoc) 
 	 *  
 	 * @see edu.zsu.fbfz.clic.dao.BaseDao#delete(java.lang.Object) 
 	 */ 
 	public void delete(T transientObject) { 
 		getHibernateTemplate().delete(transientObject); 
 	}   
 	/* 
 	 * (non-Javadoc) 
 	 *  
 	 * @see edu.zsu.fbfz.clic.dao.BaseDao#read(java.io.Serializable) 
 	 */ 
 	public T read(PK id) { 
 		return (T) getHibernateTemplate().get(type, id); 
 	}   
 	/* 
 	 * (non-Javadoc) 
 	 *  
 	 * @see edu.zsu.fbfz.clic.dao.BaseDao#update(java.lang.Object) 
 	 */ 
 	public void update(T transientObject) { 
 		getHibernateTemplate().update(transientObject); 
 	}   
 	public List <T>  getList() { 
 		// TODO Auto-generated method stub 
 		String className = type.getName(); 
 		return (List <T> ) getHibernateTemplate().find( "from  " + className); 
 	}   
 	public List <T>  getListByQuery(Object query) 
 			throws IllegalAccessException, IllegalArgumentException {