HQL:Hibernate专属语言,可以跨数据库

一、基本查询

 1 public void testQuery(){
2 Session session = HibernateUtils.getSession();
3 String hql = "from Person";
4 Query query = session.createQuery(hql);
5 List<Person> list = query.list();
6 for(Person p : list){
7 System.out.println(p);
8 }
9 HibernateUtils.close(session);
10 }

  单个属性列查询

1 //查询单个属性
2 String hql = "select p.pname from Person p";
3 Query query = session.createQuery(hql);
4 List<String> list = query.list();

  多个属性查询

1 //查询多列
2 String hql = "select p.id,p.pname from Person p";
3 Query query = session.createQuery(hql);
4 List<Object[]> objArrList = query.list();
5 for(Object[] objArr : objArrList){
6 System.out.println("编号:"+objArr[0]+" 姓名:"+objArr[1]);
7 }

二、Hibernate分页查询

1 Session session = HibernateUtils.getSession();
2 String hql = "from Person";
3 Query query = session.createQuery(hql);
4 //设置分页查询
5 query.setFirstResult(0);
6 query.setMaxResults(5);
7 List<Person> list = query.list();

三、限定查询

String hql = "from Person  where id = ?";
Query query = session.createQuery(hql);
query.setParameter(0, 5);
List<Person> list = query.list();
1 Session session = HibernateUtils.getSession();
2 String hql = "from Person where id = :id";
3 Query query = session.createQuery(hql);
4 query.setParameter("id", 5);
5 List<Person> list = query.list();

四、统计查询

1 String hql = "select count(*) from Person p";
2 Query query = session.createQuery(hql);
3 Object result = query.uniqueResult();

五、分组统计查询

1 String hql = "select avg(p.salary),p.pgender from Person p group by p.pgender";
2 Query query = session.createQuery(hql);
3 List<Object[]> objArrList = query.list();

六、投影查询

建立一个业务Bean,在bean提供有参的构造器来接收sql的返回值,创建出对象

七、排序查询

1 String hql = "from Person p order by p.salary desc";
2 Query query = session.createQuery(hql);
3 List<Person> list = query.list();

八、从配置文件中设置查询,然后提取

在 Person.hbm.xml配置文件中
1 <query name="getPerson">
2 <![CDATA[
3 from Person p where p.salary > 400
4 ]]>
5 </query>
1 Query query = session.getNamedQuery("getPerson");
2 List<Person> list = query.list();

最新文章

  1. MySQL优化概述
  2. js获取Html元素的实际宽度高度
  3. React Native实践之携程Moles框架
  4. 调研Android平台开发环境的发展演变
  5. Sublime之旅
  6. ganymed-ssh2使用
  7. 转:php中实现精确设置session过期时间的方法
  8. SVG 和字符图标
  9. jquery 第四章
  10. [C++]几种排序
  11. ASCII工具类
  12. 【转载】window.open被浏览器拦截的解决办法
  13. C++向量 vector动态数组
  14. web前端识别文字转语音
  15. Spring Boot + Spring Cloud 构建微服务系统(七):API服务网关(Zuul)
  16. POJ 2387 Til the Cows Come Home 【最短路SPFA】
  17. rgba 和 opacity 的对比.
  18. eclipse卡死在search for main types 20 files to index
  19. CSS-3 圆角Border-radius 的使用
  20. Asp.net WebAPI Request参数验证-请不要重复造轮子

热门文章

  1. win环境下安装配置openCV-4.3.0
  2. vue 中使用echarts
  3. python3笔记-读取ini配置文件
  4. 一文吃透redis持久化,妈妈再也不担心我面试过不了!
  5. webpack 多页面构建
  6. 20190923-06Linux文件权限类 000 014
  7. 滴滴AR实景导航背后的技术
  8. get、post请求方式在postman中使用步骤
  9. Git使用教程与基本原理和Sourcetree基本使用探微
  10. [程序员代码面试指南]栈和队列-最大值减去最小值 小于或等于num 的子数组的数量(单调队列)