多條件查詢

public List findByPage(int offset, String model, String[] propertyName, String[] value, boolean rigor)
 {
  List valueList = new ArrayList();
  StringBuffer baseHql = new StringBuffer();
  String ralation = "like";
  if (rigor)
  {
   ralation = "=";
  }
  baseHql.append("select model.riPrices from" + model + "as model\n");
  List list = new ArrayList();
  boolean first = true;
  for (int i = 0; i < propertyName.length; i++)
  {
   if (value[i] != null)
   {
    if (first)
    {
     baseHql.append("where" + "model." + propertyName[i] + ralation + "?\n");
     list.add(value[i]);
     first = false;
    }
    else
    {
     baseHql.append(" and " + "model." + propertyName[i] + ralation + "?\n");
     list.add(value[i]);
    }
   }
  }
  try
  {
   Session session = this.getSession();
   Query query = session.createQuery(baseHql.toString());
   query.setFirstResult(offset);
   query.setMaxResults(PageModule.getPageSize());

   List listResource = query.list();
   Iterator it = listResource.iterator();
   while (it.hasNext())
   {
    Object[] obj = (Object[]) it.next();
    Float riPrices = (Float) obj[0];
    ResourceItem resourceItem = new ResourceItem();
    resourceItem.setRiPrices(riPrices);
    valueList.add(resourceItem);
   }

  }
  catch (Exception e)
  {
   log.error("分頁查詢所有資源出錯", e);
  }
  return valueList;
 }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章