- 浏览: 419877 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (244)
- struts2 (15)
- ognl (1)
- hibernate (17)
- gwt (17)
- GROOVY (2)
- GRAILS学习 (7)
- SPRING (4)
- AJAX (2)
- JQUERY (6)
- XML (1)
- DWR (3)
- 线程 (0)
- SVN (0)
- json (1)
- anotation (0)
- 反射 (2)
- rapidframework (0)
- OA工作流 (2)
- 事务 (0)
- mysql (0)
- oracle (26)
- EXTJ (0)
- 求职 (2)
- 随笔 (22)
- 注释 (1)
- java综合 (30)
- 设计模式 (1)
- JSP SERVLET (2)
- 插件 (7)
- 应用 (3)
- HTML (5)
- flex (13)
- android (8)
- javascript (14)
- Exception (0)
- Linux (2)
- 计算机常识 (3)
- EXCEL (2)
- 正则表达式 (1)
- 开源工具 (2)
- 测试 (1)
- 生活 (7)
- 房子 (0)
- 购房大学 (4)
- UML (1)
- 服务器 (1)
- 发展 (1)
- 英语 (1)
- 项目管理 (1)
- 摘 (1)
- 网站 (1)
最新评论
-
a347911:
架构师教程:https://note.youdao.com/s ...
架构师之路--- 一个四年 JAVA 程序员的工作经历 转 -
hzxlb910:
对我帮助很大。
架构师之路--- 一个四年 JAVA 程序员的工作经历 转 -
xly_971223:
引用因此,while (!isInterrupted())也可 ...
Java 终止线程方法 -
zdglt88:
其实这个datagrid挺简单的,没有难度
Jquery easy ui 之datagrid简介 -
完善自我:
抓住重点,支持一下!
Jquery easy ui 之datagrid简介
1. 從資料庫的觀點來看,Set、Map、Bag是無序的,而List是有序的,這邊所謂的無序或有序,是指將容器中物件儲存至資料庫時,是否依容器物件中的順序來儲存。
2.
3. 然而從資料庫取得資料之後,您也許會希望Set、Map等容器中的物件可以依一定的順序來排列,您可以從兩個層次來容器中的物件排序,一是在載入資料後於JVM中排序,另一是在資料庫中直接使用order by子句來排序。
4.
5. 以 Set 這篇文章中的範例來作說明,要在JVM中就資料進行排序,您可以在映射文件中使用sort屬性來定義容器的排序,這適用於Set與Map,例如:
6.
7. User.hbm.xml
23.
24. </hibernate-mapping>sort="natural"表示使用物件的comparaTo()方法來進行排序,容器中的物件上必須有實作java.lang.Comparable 介面,例如String就有實作java.lang.Comparable介面,結果會使用字典順序來排列容器中的物件。
25.
26. 您可以實現自己的排序方式,只要定義一個類別來實作java.util.Comparator介面,例如:
40. 在自訂的Comparator中,如果兩個物件的順序相同會傳回0,而為了方便比較物件,要求傳入的物件必須實作Comparable介面(例如 String物件就有實作Comparable介面),範例中只是簡單的將原來compareTo()傳回的值乘以負一,如此就可以簡單的讓排列順序相反,接著可以在映射文件中指定自訂的Comparator類別:
41.
42. User.hbm.xml
59.
60. </hibernate-mapping>Bag與List並不適用於這種方式。
61.
62. 另一個排序的方式則是在資料庫中進行,直接使用order by子句來排序,這可以在映射文件中使用order-by屬性來指定,例如:
63.
64. User.hbm.xml
80.
81. </hibernate-mapping>觀察Hibernate所使用的SQL可以看到order by子句:
82.
83. Hibernate:
84. select emails0_.id as id0_, emails0_.address as address0_
85. from email emails0_ where emails0_.id=? order by emails0_.address desc
86. <PRE class=java name="code"></PRE>
2.
3. 然而從資料庫取得資料之後,您也許會希望Set、Map等容器中的物件可以依一定的順序來排列,您可以從兩個層次來容器中的物件排序,一是在載入資料後於JVM中排序,另一是在資料庫中直接使用order by子句來排序。
4.
5. 以 Set 這篇文章中的範例來作說明,要在JVM中就資料進行排序,您可以在映射文件中使用sort屬性來定義容器的排序,這適用於Set與Map,例如:
6.
7. User.hbm.xml
8. <?xml version="1.0" encoding="utf-8"?> 9. <!DOCTYPE hibernate-mapping 10. PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 11. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 12. 13. <hibernate-mapping> 14. 15. <class name="onlyfun.caterpillar.User" table="user"> 16. .... 17. <set name="emails" table="email" sort="natural"> 18. <key column="id"/> 19. <element type="java.lang.String" 20. column="address"/> 21. </set> 22. </class>
23.
24. </hibernate-mapping>sort="natural"表示使用物件的comparaTo()方法來進行排序,容器中的物件上必須有實作java.lang.Comparable 介面,例如String就有實作java.lang.Comparable介面,結果會使用字典順序來排列容器中的物件。
25.
26. 您可以實現自己的排序方式,只要定義一個類別來實作java.util.Comparator介面,例如:
27. 28. CustomComparator.java 29. package onlyfun.caterpillar; 30. 31. import java.util.Comparator; 32. 33. public class CustomComparator implements Comparator { 34. public int compare(Object o1, Object o2) { 35. if (((String) o1).equals(o2)) 36. return 0; 37. return ((Comparable) o1).compareTo(o2) * -1; 38. } 39. }
40. 在自訂的Comparator中,如果兩個物件的順序相同會傳回0,而為了方便比較物件,要求傳入的物件必須實作Comparable介面(例如 String物件就有實作Comparable介面),範例中只是簡單的將原來compareTo()傳回的值乘以負一,如此就可以簡單的讓排列順序相反,接著可以在映射文件中指定自訂的Comparator類別:
41.
42. User.hbm.xml
43. <?xml version="1.0" encoding="utf-8"?> 44. <!DOCTYPE hibernate-mapping 45. PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 46. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 47. 48. <hibernate-mapping> 49. 50. <class name="onlyfun.caterpillar.User" table="user"> 51. .... 52. <set name="emails" table="email" 53. sort="onlyfun.caterpillar.CustomComparator"> 54. <key column="id"/> 55. <element type="java.lang.String" 56. column="address"/> 57. </set> 58. </class>
59.
60. </hibernate-mapping>Bag與List並不適用於這種方式。
61.
62. 另一個排序的方式則是在資料庫中進行,直接使用order by子句來排序,這可以在映射文件中使用order-by屬性來指定,例如:
63.
64. User.hbm.xml
65. <?xml version="1.0" encoding="utf-8"?> 66. <!DOCTYPE hibernate-mapping 67. PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 68. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 69. 70. <hibernate-mapping> 71. 72. <class name="onlyfun.caterpillar.User" table="user"> 73. .... 74. <set name="emails" table="email" order-by="address desc"> 75. <key column="id"/> 76. <element type="java.lang.String" 77. column="address"/> 78. </set> 79. </class>
80.
81. </hibernate-mapping>觀察Hibernate所使用的SQL可以看到order by子句:
82.
83. Hibernate:
84. select emails0_.id as id0_, emails0_.address as address0_
85. from email emails0_ where emails0_.id=? order by emails0_.address desc
86. <PRE class=java name="code"></PRE>
发表评论
-
hibernate抓取策略
2012-04-20 09:58 1297Hibernate3 定义了如下几种抓取策略: 连接抓取( ... -
BLOB和CLOB的区别以及在ORALCE中的插入和查询操作
2012-04-09 12:59 1573ORACLE中的大对象: LONG: 可变长的字符串数据,最 ... -
Spring中关于SqlRowSet的Invalid scale size. Cannot be less than zero异常处理
2012-03-28 13:10 3794在使用Spring中使用JdbcTemplate.queryF ... -
hibernate open session in view 抛出异常解决方法
2012-03-23 20:52 1189http://www.blogjava.net/dreamst ... -
jdbcTemplate使用总结1
2011-09-20 15:16 1370SqlRowSet rs = jdbcTemplate.que ... -
java.lang.String 与string
2011-06-24 15:58 1035个人认为string应该是java.lang.String与数 ... -
Hibernate对集合排序
2011-04-15 09:19 1716Hibernate对集合中的元素支持两种排序方式: Ø 在数 ... -
Hibernate之deleted object would be re-saved by cascade 异常的解决
2011-02-24 11:31 940以下是我在网上找到的, 我用了第二种方法,奇怪的是: 我在ac ... -
Hibernate学习笔记
2011-02-12 16:25 1247HQL 注意事项: 1.请把以前sql中的表名换成类名,把字 ... -
hql 多表查询
2011-01-20 18:19 1145String sql = "select test1 ... -
拼接字符串的学习
2010-12-22 21:58 953package com.ccid.str; import j ... -
[原创]多条件模糊查询的通用代码
2010-12-22 18:31 1510str_query1 = "se ... -
Hibernate中使用Hql查询出一定时间段的记录【 Date 比较】
2010-12-22 18:30 20010// 初步过滤出符合条件的区域ID String sql = ... -
Hibernate 中 UUID.HEX的实现机制??
2010-11-26 10:13 3595Hibernate主键生成方式 Key ... -
为什么我们要研究Hibernate ?-----转载自J道
2010-10-08 15:56 1070最近论坛上关于Hibernate ... -
HQL中修改对象属性的句子
2010-05-20 15:54 2090def newInstance = Organization. ...
相关推荐
本篇主要讨论的是Hibernate中的一对多关系映射,以及如何在实际操作中进行配置和使用。 一对多关系指的是一个实体可以与多个其他实体相关联。例如,在用户系统中,一个用户可以有多个订单,这就是典型的一对多关系...
类似于SQL的JOIN操作,HQL可以通过`from`子句连接多个类,比如`from Order as o, Product p where o.order_id = p.order_id`表示根据`order_id`字段进行连接,对应于SQL的一对多关系查询。 7. **HQL的别名使用**:...
在Hibernate中,你可以直接在HQL(Hibernate Query Language)或JPA的`@OrderBy`注解中指定排序字段。例如,如果我们要对`User`实体按名字升序排序,可以在实体类上添加注解: ```java @Entity public class User {...
在Java开发领域,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者通过Java对象来操作数据库,极大地简化了数据库操作。本篇将详细讲解如何使用Hibernate实现分页功能,这是一种基础但实用的技术,...
实体类型的集合则包含其他实体对象,这类集合可以表示一对多或多对多的关系。 #### 1.1 集合属性 集合属性主要分为以下两类: - **单纯的集合属性**:例如 List、Set 或数组等。这些集合通常用来存储同类型的元素...
getSession().createQuery("from Admin order by " + sortname + " " + sortorder, Admin.class) .setFirstResult(begin).setMaxResults(rows).list(); ``` 这里通过设置`setFirstResult`和`setMaxResults`来实现...
7. SQL查询语法排序:SELECT -> FROM -> WHERE -> GROUP BY -> HAVING -> ORDER BY -> DISTINCT 8. HTTP状态码200表示请求成功。 9. Java的跨平台特性源于“一次编写,到处运行”的理念,因为Java代码会被编译成...
使用`TOP`和`ORDER BY`配合`WITH TIES`实现分页。 43. **Oracle分页**: Oracle常用ROWNUM进行分页,配合子查询或临时表实现。 44. **MySQL分页**: MySQL使用`LIMIT`和`OFFSET`进行分页。 这些面试题覆盖了...
- **观察者模式**:定义对象间的一种一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。 #### 12. 单例模式 确保一个类只有一个实例,并提供一个全局访问点。实现方式有两种...
例如,在C#中,我们可以轻松地使用Linq的OrderBy方法对列表进行排序,代码简洁明了。但在Java中,我们需要编写更多的辅助代码,如使用Collections.sort配合Comparator,这不仅增加了代码量,也可能使核心逻辑变得不...