成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Hibernate之Criteria基本查詢

開發 后端
本文介紹Hibernate中的Criteria基本查詢。使用Hibernate時,即使您不了解SQL的使用與撰寫,也可以使用它所提供的API來進行SQL語句查詢,org.hibernate.Criteria對SQL進行封裝。

要對資料庫管理系統進行操作,最基本的就是使用SQL(Standard Query Language)語句,大部份的資料庫都支援標準的SQL語句,然而也有一些特定于資料庫的SQL語句,應用程式配合SQL語句進行資料庫查詢時,若使用到特定于資料庫的SQL語句,程式本身會有相依于特定資料庫的問題。

使用Hibernate時,即使您不了解SQL的使用與撰寫,也可以使用它所提供的API來進行SQL語句查詢, org.hibernate.Criteria對SQL進行封裝,您可以從Java物件的觀點來組合各種查詢條件,由Hibernate自動為您產生 SQL語句,而不用特別管理SQL與資料庫相依的問題,就某個程度的意涵來看,這就像是在編譯時期也可以得到對SQL語法的檢查與驗證。

以最基本的Criteria基本查詢來說,如果您想要查詢某個物件所對應的資料表中所有的內容,您可以如下進行查詢:

  1. Criteria criteria = session.createCriteria(User.class);  
  2. List users = criteria.list();  
  3.           
  4. for(Iterator it = users.iterator(); it.hasNext(); ) {  
  5.     User user = (User) it.next();  
  6.     System.out.println(user.getId() +  
  7.                              " \t " + user.getName() +  
  8.                           "/" + user.getAge());      

Criteria建立后,若不給予任何的條件,預設是查詢物件所對應表格之所有資料,如果您執行以上的程式片段,并于設定檔中設定了了Hibernate的”show_sql”屬性,則可以在主控下看到以下的SQL語句之產生:

Hibernate: select this_.id as id0_0_, this_.name as name0_0_, this_.age as age0_0_ from T_USER this_

org.hibernate.Criteria實際上是個條件附加的容器,如果想要設定查詢條件,則要使用 org.hibernate.criterion.Restrictions的各種靜態方法傳回 org.hibernate.criterion.Criteria實例,傳回的每個org.hibernate.criterion.Criteria 實例代表著一個條件,您要使用org.hibernate.Criteria的add()方法加入這些條件實例,例如查詢” age”大于20且小于40的資料:

  1. Criteria criteria = session.createCriteria(User.class);  
  2. criteria.add(Restrictions.gt("age"new Integer(20)));  
  3. criteria.add(Restrictions.lt("age"new Integer(40)));  
  4. List users = criteria.list();  
  5.           
  6. for(Iterator it = users.iterator(); it.hasNext(); ) {  
  7.     User user = (User) it.next();  
  8.     System.out.println(user.getId() +  
  9.                               " \t " + user.getName() +  
  10.                              "/" + user.getAge());      

Restrictions的gt()方法表示大于(great than)的條件,而lt表示小于(less than)的條件,執行以上程式片段,觀察所產生的SQL語句,將使用where與and子句產來完成SQL的條件查詢:

Hibernate: select this_.id as id0_0_, this_.name as name0_0_, this_.age as age0_0_ from T_USER this_ where this_.age>? and this_.age< ?

使用add()方法加入條件時,預設是使用and來組合條件,如果要用or的方式來組合條件,則可以使用Restrictions.or()方法,例如結合age等于(eq)20或(or)age為空(isNull)的條件:

  1. Criteria criteria = session.createCriteria(User.class);  
  2. criteria.add(Restrictions.or(  
  3.                    Restrictions.eq("age"new Integer(20)),  
  4.                    Restrictions.isNull("age")  
  5.                ));  
  6. List users = criteria.list(); 

觀察所產生的SQL語句,將使用where與or子句完成SQL的條件查詢:

Hibernate: select this_.id as id0_0_, this_.name as name0_0_, this_.age as age0_0_ from T_USER this_ where (this_.age=? or this_.age is null)

您也可以使用Restrictions.like()方法來進行SQL中like子句的功能,例如查詢”name”中名稱為”just”開頭的資料:

  1. Criteria criteria = session.createCriteria(User.class);  
  2. criteria.add(Restrictions.like("name""just%"));  
  3. List users = criteria.list(); 

觀察所產生的SQL語句如下:

Hibernate: select this_.id as id0_0_, this_.name as name0_0_, this_.age as age0_0_ from T_USER this_ where this_.name like ?

Restrictions的幾個常用限定查詢方法如下表所示:

方法 說明
Restrictions.eq 等于
Restrictions.allEq 使用Map,使用key/value進行多個等于的比對
Restrictions.gt 大于 >
Restrictions.ge 大于等于 >=
Restrictions.lt 小于 <
Restrictions.le 小于等于 < =
Restrictions.between 對應SQL的BETWEEN子句
Restrictions.like 對應SQL的LIKE子句
Restrictions.in 對應SQL的in子句
Restrictions.and and關系
Restrictions.or or關系
Restrictions.sqlRestriction SQL限定查詢

Criteria基本查詢差不多就是這樣。

【編輯推薦】

  1. Hibernate緩存簡介及分類
  2. Hibernate中generator屬性的意義
  3. hibernate Key Generator 主鍵生成方式
  4. Hibernate的主鍵生成機制
  5. Hibernate的事務:事務對象的方法
責任編輯:book05 來源: 百度博客
相關推薦

2009-06-30 16:46:45

Criteria進階查

2009-06-30 16:55:19

2009-06-17 14:17:40

Criteria條件查Hibernate

2009-09-28 12:57:54

Hibernate C

2009-09-24 13:03:38

Hibernate C

2009-06-18 10:07:03

CriteriaHibernate

2009-06-26 16:15:04

Criteria的用法Hibernate

2009-06-08 10:20:01

Hibernate查詢

2009-06-18 12:59:39

Criteria Qu深入淺出Hiberna

2009-06-30 16:57:21

Criteria查詢

2009-06-12 15:13:12

Hibernate學習

2016-12-15 08:38:50

1 Hibernate基本配置

2009-11-13 09:24:58

JPA 2.0Criteria AP

2009-06-17 08:47:00

Hibernate優化

2009-09-22 08:39:59

Hibernate F

2009-09-24 15:27:41

Hibernate查詢

2009-06-26 10:01:00

Hibernate的查

2009-06-18 09:14:08

Hibernate H

2009-09-27 10:19:11

Hibernate命名

2009-09-29 16:29:40

Hibernate查詢
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲性视频网站 | 在线看av网址 | 一级片在线视频 | 日本在线网站 | 日韩在线视频一区 | 国产精品视频导航 | 日韩精品视频在线 | 日日夜夜精品免费视频 | 国产成人精品午夜 | 91 在线| 亚洲97| 久久国产精品久久久久久 | 成人av播放 | 成人精品久久 | 国产精品久久久爽爽爽麻豆色哟哟 | 免费视频成人国产精品网站 | 亚洲综合一区二区三区 | 日韩α片| 欧美一级黄带 | 国产精品精品久久久 | 一区二区国产在线观看 | 黄色播放| 精品一区久久 | 97视频人人澡人人爽 | 久久大 | 国产精品视频久久 | 日韩和的一区二区 | 日韩国产中文字幕 | 国产露脸对白88av | 国产精品一区一区 | 91原创视频在线观看 | 亚洲精品一区二区三区中文字幕 | 一区二区小视频 | 91久久久久久 | 亚洲视频自拍 | 青青久久久 | 一级高清免费毛片 | 午夜三级网站 | 免费黄色的网站 | 国内自拍真实伦在线观看 | 56pao在线 |