`
lzj520
  • 浏览: 213452 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

一个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;
     }
分享到:
评论

相关推荐

    hibernate实现动态SQL查询

    在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者将数据库操作与业务逻辑解耦,从而提高开发效率。本篇文章主要探讨如何利用Hibernate实现动态SQL查询,结合XML配置和FREEMARKER模板...

    hibernate动态分表

    【hibernate动态分表】是一种数据库设计策略,主要用于处理大数据量的问题,通过将数据分散到多个物理表中,以实现水平扩展,提高查询效率,减轻单表的压力。在Java Web开发中,Hibernate作为一款流行的ORM(对象...

    hibernate动态数据库改进版

    开发者可以通过字符串拼接动态生成HQL语句,实现动态查询。 2.3 Criteria与HQL结合 在复杂场景下,可以将Criteria与HQL结合,以达到更灵活的查询效果。例如,使用Criteria构造基本查询,然后用HQL处理更复杂的部分...

    hibernate 动态查询

    使用Hibernate時,即使您不了解SQL的使用與撰寫,也可以使用它所提供的API來進行SQL語句查詢,org.hibernate.Criteria對SQL進行封裝,您可以從Java物件的觀點來組合各種查詢條件,由Hibernate自動為您產生SQL語句,...

    Hibernate_query查询数据表中的一个字段.

    例如,如果我们要查询一个名为`users`表中的`username`字段,我们可能有一个User实体类,如下所示: ```java public class User { private String username; // getters and setters } ``` 四、SessionFactory...

    hibernate动态数据库进化版

    【hibernate动态数据库进化版】是一个关于Java持久层框架Hibernate深入学习的主题,它主要探讨了如何在实际项目中让Hibernate更加灵活地适应不同的数据库环境,实现动态的SQL生成和执行。这一进化的版本旨在提高开发...

    Hibernate的查询方式

    QBC查询方式的一个显著优点是其类型的检查性,可以减少运行时错误,同时也提供了更多的API来构造复杂的查询逻辑。 #### 总结 Hibernate的查询方式,特别是HQL和QBC,为Java开发者提供了强大而灵活的工具集,用以...

    hibernate增删改查和动态sql

    综上所述,这个压缩包文件可能包含了一个使用Hibernate和FreeMarker进行数据库操作的示例Web应用程序,具体包括了如何使用Hibernate进行基本的CRUD操作,并利用FreeMarker动态生成HQL来执行复杂的查询。通过学习和...

    Hibernate的高级查询

    在Java的持久化框架中,Hibernate是一个非常重要的工具,它为开发者提供了强大的对象关系映射(ORM)功能,使得在数据库操作上可以采用面向对象的方式。当我们需要进行更复杂的数据库查询时,Hibernate提供了丰富的...

    Hibernate 多表连接分页查询示范项目

    Criteria API 提供了一种类型安全的方式来构建动态查询。它允许开发者通过编程的方式创建查询,而不需要直接写 SQL。例如,可以创建一个 Criteria 对象,然后添加各种限制条件、排序和分组,最后执行查询。对于多表...

    hibernate的多态查询

    标题“hibernate的多态查询”指的是在Hibernate框架中,如何进行涉及不同子类的对象查询,这是ORM(对象关系映射)中的一个重要特性,旨在提高代码的灵活性和可扩展性。多态查询允许我们编写一次查询,而无需关心...

    Hibernate的MySql查询.rar

    在Java企业级开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作。本文将深入探讨在使用Hibernate进行MySQL查询时的一些关键知识点,以帮助开发者更好地理解和应用这些技术。 ...

    hibernate自定义查询

    Criteria API是Hibernate提供的另一种查询方式,它提供了更加面向对象的API,可以动态构建查询条件。下面是一个使用Criteria API的例子: ```java Session session = sessionFactory.openSession(); Criteria ...

    Hibernate查询方式代码示例

    下面是一个简单的HQL查询示例: ```java String hql = "FROM Student WHERE age > 20"; Query query = session.createQuery(hql); List<Student> students = query.list(); for (Student student : students)...

    hibernate通用查询

    Hibernate通用查询是Java开发中非常重要的一个概念,它极大地简化了数据库操作,使得开发者无需编写大量的SQL语句,即可实现复杂的数据查询。本知识点主要围绕Hibernate的通用查询功能展开,包括其基本原理、优势...

    hibernate分页查询 数据库连接

    在使用这些方法之前,我们需要创建一个HQL(Hibernate Query Language)查询,或者使用Criteria API来定义我们的查询条件。HQL是Hibernate提供的面向对象的查询语言,类似于SQL,但它是针对对象模型而不是数据库模式...

    hibernate中的查询方式

    HQL的一个显著优势在于它具有很好的跨数据库能力,这使得开发人员可以编写一次查询逻辑而无需考虑底层数据库的具体细节。 **特点:** - **面向对象:** HQL允许我们用面向对象的方式来表达查询语句,例如“from ...

    hibernate查询详解

    本文将详细介绍Hibernate的五种查询方式,包括HQL查询、Criteria方法、动态查询DetachedCriteria、例子查询、SQL查询以及命名查询,以满足不同场景下的需求。 1. HQL查询: Hibernate Query Language(HQL)是一种...

    Hibernate 参数查询通用方法

    在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者使用面向对象的方式来操作数据库,极大地简化了数据库操作。本篇将详细探讨"Hibernate参数查询通用方法"这一主题,以及如何通过Dao层...

    hibernate里面的 两种查询

    同时,HQL支持动态查询,可以根据参数动态构造查询语句,适合于复杂或动态的查询需求。 - **基本结构**:HQL查询通常以`from`开始,后面跟着实体类的名称。可以使用`select`指定返回的结果,`where`后跟查询条件,`...

Global site tag (gtag.js) - Google Analytics