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