Hibernate查询结果排序
来源:互联网 发布:餐饮行业数据分析 编辑:程序博客网 时间:2024/04/30 01:30
1.对于一般的查询排序,可以使用HQL语句,例:
Student类有两个属性id和name,对应表中的字段分别为id和NName;查询表中的所有记录并按name升序排序
- Query q=session.createQuery("from Student order by name asc");
- List<Student> li=(List<Student>)q.list();
- for (int i = 0; i < li.size(); i++) {
- System.out.println(li.get(i).getName());
- }
2.在查询对象的Set、Map等属性时也可以对其进行排序,可以分为两个层次:数据库排序和内存排序:
(1)数据库排序指的就是由数据库将查询的记录排好序,然后再返回给我们,即排序由数据库完成。
在<set>等元素中有一个order-by属性可以设置排序规则,例:(以hibernate映射Map中的Team和Student为例,Team与Student为一对多关联关系)
只需在Team.hbm.xml的<map>中设置order-by的属性值即可:
- <class name="bean.Team" table="team">
- <id name="id" column="id" type="long">
- <generator class="increment"></generator>
- </id>
- <property name="name" column="name" type="string"></property>
- <map name="students" table="students" cascade="save-update" order-by="name asc">
- <key column="team_id"></key>
- <index column="cardID" type="long"></index>
- <one-to-many class="bean.Student"/>
- </map>
- </class>
注意:(1)此处的"name"是数据库里的字段而不是类的属性。
(2)对于多对多映射关系,order-by中指定的字段是连接表中的字段而不是与其关联的表的字段,以hibernate多对多双向关联中的Student和Course为例:
如在Student.hbm.xml中的<set>中设置order-by属性指定排序规则:
- <set name="courses" table="students_courses" cascade="save-update" order-by="course_id desc" >
(2)内存排序指的就是从数据库将数据查出放入到内存中后再由Hibernate按照指定的排序规则进行排序。
内存排序:有两个属性值可以直接使用,分别是unsorted(不排序)以及natural(自然排序,即升序),此外,我们还可以自定义排序规则,方式是定义一个类,让其实现Comparator接口,并且实现该接口中的compare方法,在该方法中实现排序规则即可。然后将该自定义排序规则的类名作为sort的属性值即可。例:在Team.hbm.xml中的<map>设定sort属性值指定排序规则为自然排序:
- <map name="students" table="students" cascade="save-update" sort="natural">
- <map name="students" table="students" cascade="save-update" sort="hibernate.MyComparator">
0 0
- Hibernate查询结果排序
- Hibernate查询结果排序
- 对Hibernate 查询结果排序
- Hibernate之查询结果排序
- Hibernate如何完成查询结果的排序
- hibernate 自定义查询结果
- SELECT查询结果排序
- Hibernate取查询结果集
- hibernate 查询结果的展现
- Hibernate中HQL对查询结果进行排序2015-11-14
- sqlserver 查询结果随机排序
- sql 查询结果随机排序
- 查询结果的动态排序
- 对查询结果随机排序
- SQL之查询结果排序
- MySQL查询结果按某值排序
- iOS CoreData查询结果排序
- mysql对查询结果排序
- Hibernate映射Map
- 数据库事务与隔离级别
- Hibernate乐观锁与悲观锁
- Hibernate缓存简介及领域对象的三种状态
- linux的epoll模型详解
- Hibernate查询结果排序
- Hibernate多对多双向关联
- Hibernate组件映射
- Hibernate检索对象的方式
- 码渣的第一篇博客
- C/C++ BMP(24位真彩色)图像处理(2)------图像の截取
- 中国手游新渠道,你值得拥有
- 中国手游新渠道,你值得拥有
- Interleaving String -- LeetCode