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

Hibernate的一些基本用法

開發 后端
使用Hibernate數據查詢是一件簡單的事,Java程序設計人員可以使用對象操作的方式來進行數據查詢,查詢時使用一種類似SQL的HQL來設定查詢的條件。

本文主要簡單介紹Hibernate數據查詢、更新以及刪除,查詢時使用一種類似SQL的HQL來設定查詢的條件,希望大家對大家的學習有所幫助。

基本Hibernate數據查詢

使用Hibernate數據查詢是一件簡單的事,Java程序設計人員可以使用對象操作的方式來進行數據查詢,查詢時使用一種類似SQL的HQL(Hibernate Query Language)來設定查詢的條件,與SQL不同的是,HQL是具備對象導向的繼承、多型等特性的語言。直接使用范例來看看如何使用Hibernate進行數據庫查詢,在這之前,請先照之前介紹過的主題在數據庫中新增幾筆數據:在Hibernate中新增資料查詢數據時,我們所使用的是Session的find()方法,并在當中指定HQL設定查詢條件,查詢的結果會裝載在List對象中傳回,您所需要的是將它們一一取出,一個最簡單的例子如下:

HibernateTest.java

  1. import onlyfun.caterpillar.*;import net.sf.hibernate.*;import net.sf.hibernate.cfg.*;import java.util.*; public class HibernateTest {public static void main(String[] args) throws HibernateException {SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();Session session = sessionFactory.openSession();List users = session.find("from User");session.close();sessionFactory.close();for (ListIterator iterator = users.listIterator(); iterator.hasNext(); ) {User user = (User) iterator.next();System.out.println(user.getName() +"\n\tAge: " + user.getAge() +"\n\tSex: " + user.getSex());}}} 

find()中的“from User”即HQL,User指的是User類別,藉由映射文件,它將會查詢USER表格中的數據,相當于SQL中的SELECT * FROM USER,實際上我們的User類別是位于onlyfun.caterpillar下,Hibernate會自動看看import中的package名稱與類別名稱是否符合,您也可以直接指定package名稱,例如:

  1. session.find("from onlyfun.caterpillar.User"); 

這個程序的運行結果可能是這樣的:

  1. log4j:WARN No appenders could be found for logger (net.sf.hibernate.cfg.Environment).log4j:WARN Please initialize the log4j system properly.Hibernate: select user0_.user_id as user_id, user0_.name as name, user0_.sex as sex, user0_.age as age from USER user0_caterpillarAge: 28Sex: MmomorAge: 25Sex: FBushAge: 25Sex: MBeckyAge: 35Sex: F   

上面所介紹的查詢是最簡單的,只是從數據表中查詢所有的數據,Hibernate所查詢得回的數據,是以對象的方式傳回,以符合程序中操作的需要,我們也可以限定一些查詢條件,并只傳回我們指定的字段,例如:

  1. List names = session.find("select user.name from User as user where age = 25");for (ListIterator iterator = names.listIterator(); iterator.hasNext(); ) {String name = (String) iterator.next();System.out.println("name: " + name);}   

在find()中的HQL示范了條件限定的查詢,User as user為User類別取了別名,所以我們就可以使用user.name來指定表格傳回字段,where相當于SQL中的WHERE子句,我們限定查詢age等于25的數據,這次查詢的數據只有一個字段,而型態是String,所以傳回的List內容都是String對象,一個運行的例子如下:

  1. log4j:WARN No appenders could be found for logger (net.sf.hibernate.cfg.Environment).log4j:WARN Please initialize the log4j system properly.Hibernate: select user0_.name as x0_0_ from USER user0_ where (age=25 )name: momorname: Bush 

如果要傳回兩個以上的字段,也不是什么問題,直接來看個例子:

  1. List results = session.find("select user.name, user.age from User as user where sex = 'F'");for (ListIterator iterator = results.listIterator(); iterator.hasNext(); ) {Object[] rows = (Object[]) iterator.next();String name = (String) rows[0];Integer age = (Integer) rows[1];System.out.println("name: " + name + "\n\t" + age);}   

從上面的程序中不難看出,傳回兩個以上字段時,每一次ListIterator會以Object數組的方式傳回一筆數據,我們只要指定數組索引,并轉換為適當的型態,即可取得數據,一個查詢的結果如下:

  1. log4j:WARN No appenders could be found for logger (net.sf.hibernate.cfg.Environment).log4j:WARN Please initialize the log4j system properly.Hibernate: select user0_.name as x0_0_, user0_.age as x1_0_ from USER user0_ where (sex='F')name: momor25name: Becky35 

您也可以在HQL中使用一些函數來進行結果統計,例如:

  1. List results = session.find("select count(*), avg(user.age) from User as user");ListIterator iterator = results.listIterator();Object[] rows = (Object[]) iterator.next();System.out.println("資料筆數: " + rows[0] + "\n平均年齡: " + rows[1]); 

一個查詢的結果如下所示:

  1. log4j:WARN No appenders could be found for logger (net.sf.hibernate.cfg.Environment).log4j:WARN Please initialize the log4j system properly.Hibernate: select count(*) as x0_0_, avg(user0_.age) as x1_0_ from USER user0_資料筆數: 4平均年齡: 28.25   

unsaved-value

可以設定的值包括:

◆any - 總是儲存

◆none - 總是更新

◆null - id為null時儲存(預設)

◆valid - id為null或是指定值時儲存

這樣設定之后,您可以使用session.saveOrUpdate(updated);來取代上一個程序的session.update(updated);方法。

如果要刪除數據,只要使用delete()方法即可,直接看個例子。

HibernateTest.java

  1. import onlyfun.caterpillar.*;import net.sf.hibernate.*;import net.sf.hibernate.cfg.*;import java.util.*;public class HibernateTest {public static void main(String[] args) throws HibernateException {SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();Session session = sessionFactory.openSession();  List users = session.find("from User");User updated = null;for (ListIterator iterator = users.listIterator(); iterator.hasNext(); ) {User user = (User) iterator.next();if(updated == null)updated = user;      System.out.println(user.getName() +"\n\tAge: " + user.getAge() +"\n\tSex: " + user.getSex());}session.delete(updated);users = session.find("from User");session.close();sessionFactory.close();for (ListIterator iterator = users.listIterator(); iterator.hasNext(); ) {User user = (User) iterator.next();            System.out.println(user.getName() +"\n\tAge: " + user.getAge() +"\n\tSex: " + user.getSex());}       }} 

一個執行的結果范例如下:

  1. log4j:WARN No appenders could be found for logger (net.sf.hibernate.cfg.Environment).log4j:WARN Please initialize the log4j system properly.Hibernate: select user0_.user_id as user_id, user0_.name as name, user0_.sex as sex, ser0_.age as age from USER user0_justinAge: 28Sex: MmomorAge: 25Sex: FBushAge: 25Sex: MBeckyAge: 35Sex: FHibernate: delete from USER where user_id=?Hibernate: select user0_.user_id as user_id, user0_.name as name, user0_.sex as sex, ser0_.age as age from USER user0_momorAge: 25Sex: FBushAge: 25Sex: MBeckyAge: 35Sex: FUser user = (User) session.load(User.class, id); 

Hibernate對于數據的更新、刪除等動作,是依賴id值來判定,如果您已知id值,則可以使用load()方法來加載資料。這邊我們先介紹的是一些簡單的查詢動作,將來有機會的話,再介紹一些進階的查詢,如果您想要先認識一些HQL,可以看看參考手冊的第11章,當中對于HQL有詳細的說明。

【編輯推薦】

  1. Hibernate3.1簡單描述
  2. Hibernate save基礎簡介
  3. 淺析Hibernate 3二級緩存基礎
  4. Hibernate流行架構淺析
  5. Hibernate update淺談
責任編輯:仲衡 來源: host01
相關推薦

2009-06-18 13:42:48

Hibernate s

2009-06-18 10:53:52

Hibernate3.

2019-10-15 06:00:26

Google AnalAngularReact

2010-04-21 18:38:36

Unix網絡

2022-09-09 08:51:42

ShellLinux

2025-06-12 00:00:00

芯片服務器晶體管

2017-09-05 09:17:47

Java編程用法總結

2012-01-18 10:13:50

Objective-CiOSself

2023-02-10 09:46:04

bash腳本變量

2011-03-10 13:19:47

Oracle數據庫

2011-11-08 21:12:35

2021-09-28 06:28:51

EF錯誤用法

2019-07-09 09:31:50

操作系統電腦技術

2010-08-17 10:16:37

DIV樣式

2009-06-14 17:08:11

ibmdw云計算

2013-03-29 13:17:53

XCode調試技巧iOS開發

2011-07-13 09:13:56

Android設計

2011-03-15 17:46:43

2012-05-21 10:13:05

XCode調試技巧

2009-07-21 09:55:45

iBATIS分頁
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 婷婷色网 | 天天综合久久 | 亚洲一区二区在线视频 | 国产伦精品一区二区三区四区视频 | 欧美性久久 | 91精品国产综合久久久久蜜臀 | 97精品超碰一区二区三区 | 欧美黑人巨大videos精品 | 久色激情| 国产成人在线看 | 欧美在线观看一区二区 | 国产免费观看一级国产 | 九九免费观看视频 | 欧美日韩国产高清 | 国产在线资源 | 国产福利91精品 | 成人在线观看网站 | 天天看天天摸天天操 | 亚洲一区二区三 | 久久久.com | 欧美成人精品激情在线观看 | av网站免费观看 | 国产成人精品一区二区三区在线 | 国产一区 | 91.色| 久久成人精品视频 | 久久精品国产一区二区三区 | 欧美日韩综合一区 | 一级黄色片毛片 | 在线播放国产一区二区三区 | 欧美一级全黄 | 亚洲国产一区在线 | 欧美日韩电影在线 | www.日韩| 色综合视频 | 中文字幕一区二区三区乱码在线 | 久草欧美视频 | 国产三区精品 | 国产成人亚洲精品自产在线 | 国产精品久久久久久久模特 | 久久久久久成人 |