一个hibernate动态查询
//@author lzj
//lzj:根据条件动态查询
public List findPhotoAllDyn(String isshow,String classname,String userid,String start, String end,String phototypeid,String pagenum){
StringBuffer hqlStr = new StringBuffer("select pt.STypename,pc.IPhotoclass,pc.SNames,pc.SUsername,pc.IStatus,pc.IShow ,pc.DAdddate ,pt.ITypeid,count(pr) from TPhototype pt right outer join pt.TPhotoclasses pc left join ");
try{
if(Integer.parseInt(isshow)==0)hqlStr.append("pc.TPicturescores pr Where pc.IShow=0 ");
if(Integer.parseInt(isshow)==1)hqlStr.append("pc.TShowopuses pr Where pc.IShow=1 ");
if(Integer.parseInt(isshow)==-1)hqlStr.append("pc.TPicturescores pr Where pc.IShow is not null ");
}catch(Exception e){
hqlStr.append("pc.TPicturescores pr Where pc.IShow=0 ");
}
if(classname!="")hqlStr.append("and pc.SNames=:sn ");
if(userid!="")hqlStr.append("and pc.SUsername =:SUsername ");
if(start!="")hqlStr.append("and pc.DAdddate between :Start ");
if(end!="")hqlStr.append("and :End ");
if(phototypeid!="")hqlStr.append("and pt.ITypeid = :ITypeid ");
hqlStr.append("group by pt.STypename,pc.IPhotoclass,pc.SNames,pc.SUsername,pc.IStatus,pc.IShow ,pc.DAdddate ,pt.ITypeid order by count(pr) desc ");
Session session =this.getSession();
Query query = session.createQuery(hqlStr.toString());
if(classname!="")query.setString("sn",classname);
if(userid!="")query.setString("SUsername",userid);
if(phototypeid!="")query.setString("ITypeid",phototypeid);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
if(start!="")
try {
query.setDate("Start",sdf.parse(start));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(end!="")
try {
query.setDate("End",sdf.parse(end));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
query.setCacheable(true);
if (pagenum == null){
/*如果pagenum是空,则数据从第一条开始*/
query.setFirstResult(0);
/*设置查询开始的第几条数据,这里是从第1条开始*/
query.setMaxResults(PageSize);
/*设置查询数据条数*/
}else{
try{
Integer p = (Integer.valueOf(pagenum)-1) * PageSize;
query.setFirstResult(p);
query.setMaxResults(PageSize);
}catch (Exception e){
query.setFirstResult(0);
query.setMaxResults(PageSize);
}
}
List result = query.list();
List templist = new ArrayList();
for (Iterator it = result.iterator();it.hasNext();){
Map mm = new HashMap();
Object[] row=(Object[])it.next();
Query query2 =session.createQuery("from TPopularshow ps where ps.SUpid = :s");
query2.setString("s", ((Long)row[1]).toString());
query2.setCacheable(true);
List result2 = query2.list();
Iterator it2 = result.iterator();
if (query2.list().size()>0){
mm.put("ps", "yes");
} else{
mm.put("ps", "");
}
mm.put("STypename", (String)row[0]);
mm.put("IPhotoclass", (Long)row[1]);
mm.put("SNames", (String)row[2]);
mm.put("SUsername", (String)row[3]);
//mm.put("IStatus",(Long)row[4]);
if((Long)row[4]==null){
mm.put("IStatus2","");
}else if((Long)row[4]==1){
mm.put("IStatus","半开放");
mm.put("IStatus2",(Long)row[4]);
}else if((Long)row[4]==2){
mm.put("IStatus","开放");
mm.put("IStatus2",(Long)row[4]);
}else if((Long)row[4]==0){
mm.put("IStatus","不开放");
mm.put("IStatus2",(Long)row[4]);
}
if((Long)row[5]==0){
mm.put("IShow", "普通相册");
mm.put("ptype", 1);
mm.put("IShowb", 3);
}else if((Long)row[5]==1){
mm.put("IShow", "特殊相册");
mm.put("ptype", 2);
mm.put("IShowb", 4);
}
//mm.put("IShow", (Long)row[5]);
mm.put("DAdddate", (Date)row[6]);
mm.put("Count", (Long)row[8]);
templist.add(mm);
}
session.close();
return templist;
}