Hibernate学习笔记----HQL(2)
来源:互联网 发布:windows无法识别u盘 编辑:程序博客网 时间:2024/06/06 06:50
分页查询
/** * 分页查询 */public void testPageQuery(){String hql = "FROM Employee";Query query = session.createQuery(hql);//查询第3页的内容int pageNo = 3;int pageSize = 5;List<Employee> employees = query.setFirstResult((pageNo - 1) * pageSize).setMaxResults(pageSize).list();System.out.println(employees);/** * setFirstResult(int firstResult):设定从那一个对象开始检索,参数firstResult * 表示这个对象在查询结果中的索引位置,索引位置的起始值为0,默认情况下,Query从查询结果中的第一个对象开始检索 * * setMaxResult(int maxResult):设定一次最多检索出的对象的数目,在默认情况下Query和Criteria接口检索出查 * 询结果中的所有对象。 */}
命名化查询
//命名查询,查询语句写在hbm.xml里面,便于维护public void testNamedQuery(){Query query = session.getNamedQuery("salaryEmps");List<Employee> employees = query.setDouble("minSal", 600) .setDouble("maxSal", 6000).list();System.out.println(employees);}Employee.hbm.xml
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!-- Generated 2016-7-24 23:26:24 by Hibernate Tools 3.5.0.Final --><hibernate-mapping> <class name="cn.limbo.hibernate.entities.Employee" table="EMPLOYEES"> <id name="id" type="java.lang.Integer"> <column name="ID" /> <generator class="native" /> </id> <property name="name" type="java.lang.String"> <column name="NAME" /> </property> <property name="email" type="java.lang.String"> <column name="EMAIL" /> </property> <property name="salary" type="double"> <column name="SALARY" /> </property> <many-to-one name="department" class="cn.limbo.hibernate.entities.Department" column="DEPARTMENT_ID"> </many-to-one> </class> <span style="color:#ff0000;"><query name="salaryEmps"><![CDATA[From Employee e WHERE e.salary > :minSal AND e.salary < :maxSal]]></query></span></hibernate-mapping>
属性投影检索
/** * 属性投影检索 */public void testFieldQuery(){String hql = "SELECT e.email,e.salary,e.department FROM Employee e WHERE e.department = :department";Query query = session.createQuery(hql);Department department = new Department();department.setId(13);//一条记录查询出来的结果是一个Object数组List<Object[]> result = query.setEntity("department", department).list();for(Object [] objects : result){System.out.println(Arrays.asList(objects));}}@Test/** * 升级版属性投影检索,推荐使用这个方法,但是必须保证实体类一定要有一个匹配的构造器 */public void testFieldQuery2(){String hql = "SELECT new Employee(e.email,e.salary,e.department)"+ "FROM Employee e "+ "WHERE e.department = :department";Query query = session.createQuery(hql);Department department = new Department();department.setId(13);//返回的是一个Employee的集合List<Employee> result = query.setEntity("department", department).list();for(Employee emp : result){System.out.println(emp.getId() + " " + emp.getEmail() + " " + emp.getSalary() + " " + emp.getDepartment());}}
报表查询(使用Group By,max等函数)
public void testGroupBy(){String hql = "SELECT min(e.salary) , max(e.salary) "+ "FROM Employee e "+ "GROUP BY e.department "+ "HAVING min(salary) > :minSal";Query query = session.createQuery(hql);query.setDouble("minSal", 600);List<Object[]> result = query.list();for(Object[] objects : result){System.out.println(Arrays.asList(objects));}}
有一个问题
解决方法
0 0
- Hibernate学习笔记----HQL(2)
- Hibernate学习笔记:HQL
- hibernate HQL学习笔记
- Hibernate HQL优化学习笔记
- Hibernate学习笔记----HQL(1)
- Hibernate学习笔记----HQL(3)
- hibernate学习笔记4---hql
- hibernate学习笔记——hql查询
- Hibernate学习笔记(十) — HQL查询
- Hibernate学习笔记-HQL(Hibernate Query Language)
- Hibernate学习笔记-HQL(Hibernate Query Language)
- Hibernate 学习笔记:Hibernate 中 HQL 语句的用法
- Hibernate 笔记 HQL查询
- Hibernate学习记录2 HQL常规操作
- hibernate之HQL学习
- Hibernate HQL 学习点滴
- hibernate 学习笔记(2)——HQL和高级查询
- hibernate 中HQL语句查询学习笔记一
- 性能优化——布局优化
- HDU 5748 Bellovin(LIS)
- DialogInterface点击事件和View点击事件冲突问题
- Android 别人那里学习到的回调机制
- HDU 4998 Rotate
- Hibernate学习笔记----HQL(2)
- 国内一线互联网公司内部面试题库
- Android自定义View 简单实现多图片选择控件
- js 选项卡举例
- hadoop使用心得总结
- [CityHunter]游戏流程设计及技术要点
- 【CDP-云设计模式】第5章,3.私有分配模式(Private Distribution Pattern)
- 远程host改变后,本机ssh相应修改
- ambari基础篇