`

Hibernate笔记:HQL查询总结(二)——条件查询

阅读更多

条件查询

 

1.拼字符串

where条件后面,可以用字符串连接组成条件

String hql = " select s.id, s.name from Student s where s.name like '%1%'";

Query query = session.createQuery(hql);

List list = query.list();

for (Iterator iter=students.iterator(); iter.hasNext();) {
    Object[] obj = (Object[])iter.next();
    System.out.println(obj[0] + "," + obj[1]);
}

 

2.可以采用 ?来传递参数(索引从0开始)

(1)分开设值

//条件查询,参数索引值从0开始,索引位置。通过setString,setParameter设置参数String hql = "from Users where name=? and passwd=?";

Query query = session.createQuery(hql);

     

//第1种方式

//query.setString(0, "name1");

//query.setString(1, "password1");

 

//第2种方式

query.setParameter(0"name1",Hibernate.STRING);

query.setParameter(1"password1",Hibernate.STRING);

List<Users> list = query.list();

 

for(Users users : list){

    System.out.println(users.getId());

 

(2)方法链

List students = session.createQuery("select s.id, s.name from Student s

                where s.name like ?")
                    .setParameter(0, "%1%")
                    .list();

for(Iterator iter=students.iterator(); iter.hasNext();) {
    Object[] obj = (Object[])iter.next();
    System.out.println(obj[0] + "," + obj[1]);
}

 

3.使用 :参数名称的方式传递参数值

//条件查询,自定义索引名(参数名):username,:password.通过

//setString,setParameter设置参数

String hql = "from Users where name=:username and passwd=:password";

Query query = session.createQuery(hql);

 

//第1种方式

//query.setString("username", "name1");

//query.setString("password", "password1");

 

//第2种方式,第3个参数确定类型

query.setParameter("username""name1",Hibernate.STRING);

query.setParameter("password""password1",Hibernate.STRING);

 

//第3种方式

//query = query.setParameter("username""name1").setParameter

//("password""password1");

 

List<Users> list = query.list();

 

for(Users users : list){

    System.out.println(users.getId());

 

4.支持谓词in,需要使用setParameterList进行参数传递

List students = session.createQuery("select s.id, s.name from Student s

         where s.id in(:myids)")
         .setParameterList("myids", new Object[]{1, 2, 3, 4, 5})
         .list();
   
for (Iterator iter=students.iterator(); iter.hasNext();) {
    Object[] obj = (Object[])iter.next();
    System.out.println(obj[0] + "," + obj[1]);
}

 

5.在HQL中使用数据库的函数

List students = session.createQuery("select s.id, s.name from Student s

         where date_format(s.createTime, '%Y-%m')=?")
         .setParameter(0, "2010-12")
         .list();
for (Iterator iter=students.iterator(); iter.hasNext();) {
    Object[] obj = (Object[])iter.next();
    System.out.println(obj[0] + "," + obj[1]);
}

 

6.查询时间段的数据

http://blog.sina.com.cn/s/blog_59c701350100nkuk.html

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   
List students = session.createQuery("select s.id, s.name from Student s

         where s.createTime between ? and ?")
         .setParameter(0, sdf.parse("2010-12-01 00:00:00"))
         .setParameter(1, sdf.parse("2010-12-31 23:59:59"))
               .list();
for (Iterator iter=students.iterator(); iter.hasNext();) {
    Object[] obj = (Object[])iter.next();
    System.out.println(obj[0] + "," + obj[1]);
}

分享到:
评论

相关推荐

    Hibernate笔记完整版

    《Hibernate笔记完整版》 在Web开发领域,Hibernate作为三大框架之一,扮演着至关重要的角色。本文将全面介绍Hibernate,包括其数据持久化的概念、优缺点对比,以及Hibernate的核心概念和编程步骤。 对象持久化是...

    Hibernate学习笔记(3)

    本文将深入探讨Hibernate中两种常用的查询语言——HQL(Hibernate Query Language)与QBC(Query By Criteria),并分析它们各自的优缺点以及适用场景。 #### 二、HQL简介 HQL是一种面向对象的查询语言,它类似于...

    黑马程序员_hibernate框架开发2016版讲义和笔记资料_day1_day2_day3_day4

    《Hibernate框架深度解析——基于黑马程序员2016版教学资料》 Hibernate,作为一个强大的对象关系映射(ORM)框架,极大地简化了Java开发者在数据库操作中的工作。它通过提供数据持久化的对象模型,使得开发者可以...

    黑马程序员 hibernate 2016版讲义和笔记(4天全)

    《Hibernate技术深度剖析——基于黑马程序员2016版讲义与笔记》 Hibernate,作为Java领域中的一个著名持久化框架,为开发者提供了强大的对象关系映射(ORM)功能,极大地简化了数据库操作。本资料集是黑马程序员...

    韩顺平hibernate笔记及图解

    总结起来,"韩顺平hibernate笔记及图解"涵盖了Hibernate的基础概念、核心组件、对象关系映射、查询机制、事务管理以及实体间的关系等内容。通过学习这份笔记,开发者能深入理解Hibernate的工作原理和使用技巧,提升...

    hibernate框架开发2016版视频 四天学习笔记完整版

    5. Criteria API和HQL(Hibernate Query Language):提供了强大的查询能力,允许开发者用面向对象的方式编写查询,而不是直接写SQL。 在四天的学习笔记中,可能涉及的课程内容包括: - Hibernate环境搭建:介绍...

    hibernate笔记

    总结来说,Hibernate笔记涵盖了ORM的核心概念,包括配置、对象模型、事务处理、查询、关联映射以及性能优化等多个方面。通过深入学习,你可以掌握如何高效地利用Hibernate进行数据库操作,提升开发效率和代码质量。

    黑马程序员_hibernate框架开发2016版讲义和笔记资料_day03

    6. 缓存机制:了解Hibernate的两级缓存——第一级缓存Session和第二级缓存Region,以及查询缓存的使用,有助于提高应用性能。 7. 深入理解Callback事件:Hibernate支持在特定生命周期阶段触发回调方法,如预加载、...

    Struts2笔记+Hibernate3.6笔记+Spring3笔记

    4. **HQL(Hibernate Query Language)**: Hibernate特有的SQL方言,支持更复杂的查询。 5. **缓存机制**: 第一级缓存(Session级别的)和第二级缓存(SessionFactory级别的),提高性能。 6. **事务管理**: 提供...

    Hibernate笔记

    在"**Hibernate笔记.pdf**"中,你将深入学习到如何配置Hibernate项目,创建实体,配置映射文件,使用SessionFactory,管理会话,执行查询,以及处理事务等内容。这份笔记对于初学者来说是一份宝贵的参考资料,能够...

    hibernate学习笔记mashibing

    《Hibernate学习笔记——马士兵教程解析》 在Java开发领域,ORM(Object-Relational Mapping)框架的使用已经非常普遍,其中Hibernate作为一款优秀的ORM框架,因其强大的功能和易用性深受开发者喜爱。本文将根据马...

    javaEEHibernate学习笔记

    Java EE Hibernate 学习笔记是针对企业级Java应用程序开发中的持久化框架——Hibernate进行深入学习的资料集合。Hibernate是一个强大的对象关系映射(ORM)工具,它极大地简化了数据库操作,使得开发者可以使用面向...

    2023年Java相关课程系列笔记之十四Hibernate学习笔记.doc

    在本篇“2023年Java相关课程系列笔记之十四Hibernate学习笔记”中,我们将深入探讨Java开发中常用的持久化框架——Hibernate。这个框架由梁建全老师主讲,旨在帮助开发者更高效、便捷地进行数据库操作,弥补JDBC在...

    hibernate培训第二天

    【hibernate培训第二天】——深入理解Hibernate框架 在软件开发中,ORM(Object-Relational Mapping)框架已经成为连接数据库与应用程序的重要桥梁,而Hibernate作为Java领域中的主流ORM框架,其强大而灵活的功能...

    Hibernate学习笔记

    Hibernate 提供了自己的查询语言——HQL(Hibernate Query Language),它是面向对象的,语法类似SQL。此外,还可以使用 Criteria 查询、Query API 或者最新的JPQL(Java Persistence Query Language)。 7. **...

    Hibernate5.0-4天学习笔记.rar

    第二天,课程深入到了查询机制,包括HQL(Hibernate Query Language)和Criteria API。HQL是一种面向对象的查询语言,其语法类似于SQL,但更加面向对象,使得我们可以直接按照对象的属性进行查询。Criteria API则...

Global site tag (gtag.js) - Google Analytics