`
Supanccy2013
  • 浏览: 223009 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

hibernate多条件查询

阅读更多
  1.        Hibernate的Criteria这个东东,我觉得挺好的,它用于一个对象(也就是一张表)的各种查询非常好用,像:模糊查询,比较等等。(第一个是自己的,第二种是老陈的笔记)
     以下是摘抄自课本上:
          使用Criteria首先创建Criteria对象,与创建Query对象的语法很相似,但需要传入的参数是对应实体类的类型对象。然后使用Restrictions对象的静态方法(包括like,ge,gt,le,in等)构造查询条件,并添加进Criteria对象中。其中,like方法构造一个模糊查询的条件,第一个参数是参数名,第二个参数是查询条件的值,第三个参数是关键字匹配的方式,可选的有MatchMode.ANYWHERE,MatchMode.End,MatchMode.START和MatchMode.EXACT(精确查询)。ge表示构造大于等于的查询条件,gt则是大于,le则是小于等于,lt则是小于。最后,还可以通过Criteria的addOrder方法指定查询的排序方式。同样,分页查询的两个方法Criteria对象也支持,所以一般构造复杂的查询方法时候,我们采用Criteria的方式。

For Example:

   //得到全部招聘信息
public static List getAllJob(long cid,long jobTypeId,long pd,String keyWord)
{
  Session session=HibernateSessionFactory.getSession();
   Criteria c=session.createCriteria(Job.class);
   //取别名
   c.createAlias("jobtype","jobtype");
   c.createAlias("city","city");
 
   if(cid!=0)
   {
    c.add(Restrictions.eq("city.id",cid));
   }
   if(jobTypeId!=0)
   {
    c.add(Restrictions.eq("jobtype.id",jobTypeId));
   }
   if(pd!=0)
   {
    //得到calendar实例,默认为当前时间
    Calendar calendar=Calendar.getInstance();
    //当前的日期减少pd天
    calendar.add(Calendar.DAY_OF_MONTH, (int)-pd);
    //得到前pd天的日期
    Date date=calendar.getTime();
    c.add(Restrictions.gt("publishdate",date));
   }
   if(!"".equals(keyWord))
   {
    c.add(Restrictions.like("title", keyWord,MatchMode.ANYWHERE));
   }
   List list=c.list();
  session.close();
  return list;
}


2.对象查询
1)对象查询只能够查询一个对象。也就是说对象查询不支持
  关联查询
2)对象查询非常适合于对同一张表进行多条件查询
3)criteria的使用格式:
Session session=HibernateSessionFactory.getSession();
  Criteria c=session.createCriteria(Emp.class);//创建一个实例
  double minPay=3000;
  double maxPay=5000;
  //c.add(Restrictions.like("ename", "A",MatchMode.ANYWHERE));
 
  //c.add(Restrictions.between("sal",minPay, maxPay));
  //c.add(Restrictions.eq("job", "CLERK"));
  c.add(Restrictions.eq("dept.dname", "SALES"));
  List<Emp> empList=c.list();//返回的是一个对象集合
  //没有加约束条件
  for(Emp row:empList)
  {
   System.out.println(row.getEname());
  }
4)criterian返回的永远都是对象集合
5)我要说话:
    Criteria 的一个属性是关于另外一个对象的引用。那么我们就要
    为这个属性创建别名

Session session=HibernateSessionFactory.getSession();
  Criteria c=session.createCriteria(Emp.class);//创建一个实例
  double minPay=3000;
  double maxPay=5000;
  //c.add(Restrictions.like("ename", "A",MatchMode.ANYWHERE));
 
  //c.add(Restrictions.between("sal",minPay, maxPay));
  //c.add(Restrictions.eq("job", "CLERK"));
  c.createAlias("dept", "dept");//取别名
  c.add(Restrictions.eq("dept.dname", "SALES"));
  List<Emp> empList=c.list();//返回的是一个对象集合
  //没有加约束条件
  for(Emp row:empList)
  {
   System.out.println(row.getEname());
  }
分享到:
评论

相关推荐

    struts2+spring2+hibernate3注册查询搜索分页实例

    搜索功能通常涉及到条件查询,可以利用Hibernate3的Criteria API或者HQL动态构造查询语句,根据用户输入的关键词匹配数据库中的记录。搜索结果同样可以结合分页进行展示。 总的来说,这个"Struts2+Spring2+...

    hibernate中的查询方式

    ### Hibernate中的查询方式详解 #### 一、HQL查询(Hibernate Query Language) HQL是Hibernate提供的面向对象的查询语言,其语法与SQL相似但并非完全相同。HQL的一个显著优势在于它具有很好的跨数据库能力,这...

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

    总结,"Hibernate 多表连接分页查询示范项目"是一个实用的示例,它展示了如何在实际应用中利用 Hibernate Criteria API 实现复杂查询和分页,对于学习和掌握 Hibernate 的高级特性和数据库操作技巧非常有帮助。...

    springMVC+hibernate的条件查询加分页的demo

    在这个“springMVC+hibernate的条件查询加分页的demo”中,我们将探讨如何结合这两个框架实现动态的条件查询和分页功能。 首先,让我们了解一下SpringMVC中的条件查询。在SpringMVC中,通常通过Controller层接收...

    Java_Hibernate QBC条件查询对比

    本篇文章将深入探讨Hibernate中的QBC(Query By Example)条件查询与传统的HQL(Hibernate Query Language)查询的对比,帮助开发者更好地理解和选择适合的查询方式。 QBC(Query By Example)是Hibernate提供的一...

    hibernate多表查询详解

    **hibernate多表查询详解** 在Java的持久化框架中,Hibernate是一个广泛使用的ORM(对象关系映射)工具,它允许开发者用面向对象的方式来处理数据库操作。在实际的业务场景中,数据往往不是孤立存在的,而是存在于...

    \Hibernate_query条件查询

    《Hibernate查询条件查询详解》 Hibernate作为Java领域中广受欢迎的对象关系映射(ORM)框架,极大地简化了数据库操作。其强大的查询能力是其核心功能之一。本篇将深入探讨Hibernate的条件查询,帮助开发者更好地...

    Hibernate在查询条件中创建List集合

    本文将深入探讨如何在Hibernate中利用查询条件创建List集合,这在处理复杂的数据筛选和聚合时尤其有用。 首先,让我们理解在Hibernate中创建List集合的基本概念。List集合是Java集合框架的一部分,它可以存储有序且...

    hibernateHQL关联查询

    在实际开发中,HQL关联查询的应用场景非常广泛,特别是在需要跨多个实体进行数据检索的情况下。例如,在电子商务系统中,我们需要获取用户信息及其相关的订单信息时,就可以利用HQL关联查询来简化这一过程。此外,当...

    Hibernate的MySql查询.rar

    Criteria API则提供了一种更加面向对象的查询方式,它允许我们构建查询条件并动态地组合它们。以下是如何使用Criteria API来获取所有用户: ```java Session session = HibernateUtil.getSessionFactory()....

    Hibernate的高级查询

    当我们需要进行更复杂的数据库查询时,Hibernate提供了丰富的高级查询功能,这正是“Hibernate的高级查询”这一主题的核心所在。 在Hibernate中,高级查询主要包括HQL(Hibernate Query Language)、Criteria API和...

    hibernate的多态查询

    5. **多态查询的实现**:Hibernate支持使用`DetachedCriteria`或`Criteria` API来进行多态查询,通过`createCriteria()`方法指定父类,并使用`add(Restrictions.in("property", values))`等方法来限制查询条件。...

    hibernate实现递归查询

    在查询数据库时,递归查询意味着我们查询一个记录,然后根据该记录的某些属性再查询其关联的记录,这个过程可能反复进行,直到满足某个终止条件。 在Hibernate中,我们可以利用HQL(Hibernate Query Language)或 ...

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

    如果你希望在不打开Session的情况下构建查询条件,可以使用DetachedCriteria: ```java DetachedCriteria detached = DetachedCriteria.forClass(User.class); detached.setProjection(Projections.property(...

    hibernate里面的 两种查询

    Criteria API 是Hibernate提供的一种面向对象的查询方式,它允许开发者通过构建对象来表示查询条件,而不是直接编写SQL语句。这种查询方式更加符合面向对象编程的思想,降低了SQL语句的硬编码,提高了代码的可读性...

    hibernate实现动态SQL查询

    例如,我们可以为一个实体类定义多个HQL或SQL查询,根据实际需要选择执行哪一个。 五、FREEMARKER解析 FREEMARKER是一款强大的模板引擎,常用于Web应用中的视图渲染。在Hibernate中,我们可以利用FREEMARKER生成...

    Struts和Hibernate分页及查询

    本实践项目结合了这两个框架,实现了基于Struts的前端展示和基于Hibernate的数据访问层,提供了分页和条件查询功能,这对于大型Web应用来说是非常基础且重要的。 **Struts框架** 是一个用于构建企业级Web应用程序的...

    Hibernate的查询方式

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

    Hibernate各种查询:联表查询 分页查询 位置参数查询(?) 占位符查询(冒号查询) 统计查询

    本篇文章将详细解析Hibernate中的几种主要查询方式,包括联表查询、分页查询、位置参数查询、占位符查询(冒号查询)以及统计查询,这些都是在实际开发中非常常见的需求。 首先,我们来看**联表查询**。在Hibernate...

Global site tag (gtag.js) - Google Analytics