hibernate第三章:HQL查询1
来源:互联网 发布:南极人 俞兆林 知乎 编辑:程序博客网 时间:2024/05/16 08:51
什么是HQL?
为什么使用HQL?
如何使用HQL?
使用实体查询
属性查询
参数绑定
HQL中的聚合函数
排序
分组
分页
什么是HQL?
是hibernate支持的两种主要查询之一:HQL(Hibernate Query Language , Hibernate查询语言) 。是一种面向对象的查询语句,没有表,字段的概念,只有类,对象和属性的概念。
为什么使用HQL?
想到之前,我们使用JDBC时,我们的查询是什么样子的?
private Connection conn;private PreparedStatement pst;private ResultSet rs;public List findLikeTitle(String title){List list = new ArrayList();String sql="select * from Books b where lower(b.title) like lower(?) order by pubdate desc";try {conn = DBUtil.getConn();pst=conn.prepareStatement(sql);pst.setString(1, "%"+title+"%");rs=pst.executeQuery();Book book=null;while(rs.next()){book=new Book();book.setId(rs.getLong("id"));book.setIsbn(rs.getString("ISBN"));book.setPrice(rs.getDouble("price"));book.setPubdate(rs.getDate("pubdate"));book.setTitle(rs.getString("title"));list.add(book);}} catch (Exception e) {e.printStackTrace();}finally{DBUtil.close(conn, pst, rs);}return list;}
复杂的SQL语句,繁复的包装对象放在集合中,代码繁琐,容易出错。
HQL提供了一种面向对象的查询语句,更加灵活,功能强大。首选。
语法:
[select/update/delete….]from Entity [where…] [group by…] [having…][order by…]
如何使用HQL?
分为四个步骤:
·得到session
·编写HQL语句
·创建Query对象
·执行查询,返回结果
package org.wiksys;import java.util.List;import org.hibernate.HibernateException;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class Test {public static void main(String[] args) {SessionFactory sf=null;Session session=null;try {sf=new Configuration().configure().buildSessionFactory();//第一步:获得sessionsession=sf.openSession();//第二步:编写HQL语句,语法可以知道,Select可以写也可以不写//这里就先不写,要是不习惯的可以写上String hql="from Student";//第三步:创建Query对象Query query=session.createQuery(hql);//第四部:执行查询,并返回结果。List list=query.list();System.out.println(list.size());} catch (HibernateException e) {e.printStackTrace();} finally {session.close();sf.close();}}}
通过上面的HQL查询,我们可以看到是多么的简单。
使用实体查询
向上面的“from Student”就相当于SQL语句“select * from Student”;
由于是面向对象,就存在继承关系,或许Student类存在多个子类,那么我们这里所使用的“from Student”可以查出所有子类的记录数,即使他不在一张表中。
Where子句:可以根据条件查询。
Like子句用于比较字符串。
属性查询:也就是在select后添加要查询的属性,然后再查询,其实和SQL没多大差距
package org.wiksys;import java.util.List;import org.hibernate.HibernateException;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class Test {public static void main(String[] args) {SessionFactory sf=null;Session session=null;try {sf=new Configuration().configure().buildSessionFactory();//第一步:获得sessionsession=sf.openSession();//第二步:编写HQL语句,语法可以知道,Select可以写也可以不写//这里就先不写,要是不习惯的可以写上String hql="select id from Student";//第三步:创建Query对象Query query=session.createQuery(hql);//第四部:执行查询,并返回结果。List list=query.list();for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}System.out.println(list.size());} catch (HibernateException e) {e.printStackTrace();} finally {session.close();sf.close();}}}
篇幅问题,我们分为两章来阐述,有什么做的不好的地方,给我留言,或是联系我的QQ:386011356,我会改进的。
相关的jar文件:http://download.csdn.net/detail/wiksys/4545524
源码:http://download.csdn.net/detail/wiksys/4558526
- hibernate第三章:HQL查询1
- Hibernate查询(1)--HQL
- hibernate--HQL查询语句(1)
- Hibernate HQL查询(1)
- 4.Hibernate HQL查询1
- 【Hibernate】Hibernate HQL 查询
- hibernate复习2 查询1--HQL
- hibernate--HQL查询语句(1)
- hibernate--HQL查询语句(1)
- Hibernate查询语言:HQL
- hibernate查询语句--HQL
- Hibernate 查询语言(HQL)
- Hibernate查询语言:HQL
- Hibernate查询语言:HQL
- Hibernate查询语言:HQL
- Hibernate查询语言:HQL
- Hibernate查询语言:HQL
- Hibernate查询语言:HQL
- linux 下的netlink实现及其应用
- 百度面试题——最小元素栈设计
- 那时,我们正年轻
- 安装XP和LINUX双系统
- 中国人必须知道的20个常识
- hibernate第三章:HQL查询1
- sizeof与sizeof(string) (转载)
- 从给定的N个正数中选取若干个数之和最接近M
- 将lua中的值放入栈顶
- 邂逅在华灯初上
- 笑忘书之倚天屠龙记
- 异常集锦
- JPA使用总结
- 【转】Mongo db 与mysql 语法比较