日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java如何写外键关联_JAVA基础:Hibernate外键关联与HQL语法

發布時間:2024/10/14 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java如何写外键关联_JAVA基础:Hibernate外键关联与HQL语法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

例如對于TUser類

1.實體查詢

String hql = " from TUser";

執行這條語句會返回TUser以及TUser子類的紀錄。

注: 如果 TUser 類具有外鍵, 查詢會報錯!

解決方法: select 別名.屬性 from 類 as 別名. 沒有別名.屬性仍然報錯!

hql = "from java.lang.Object"

會返回數據庫中所有庫表的紀錄。

where 語句

hql = "from TUser as user where user.name=’yyy’";

其中,as可以省略也一樣

hql = "from TUser user where user.name=’yyy’";

where子句中,我們可以通過比較運算符設定條件,如:

=, <>, >, =, <=, between, not between, in, not in, is, like等。

2.屬性查詢

List list = session.createQuery("select user.name, user.age from TUser as user").list();

還可以在HQL中動態構造對象實例的方法,將數據封裝。

List list = session.createQuery("select new TUser(user.name, user.age) from TUser as user").list();

Iterator it = list.iterator();

while(it.hasNext() ) {

TUser user = (TUser)it.next();

System.out.println(user.getName());

}

但是要注意這里的TUser對象只是對name和age屬性的封裝,其他狀態均未賦值,所以不能用它來進行更新操作。

也可以在HQL的Select子句中使用統計函數

"select count(*) ,min(user.age) from TUser as user"

也可以使用distinct關鍵字來刪除重復紀錄。

select distinct user.name from TUser as user;

3.實體的更新與刪除

hibernate 2中需要先查詢出實體,設置屬性后再保存。

hibernate 3中,提供了更靈活的方式(bulk delete/update)

更新:

Query query = session.createQuery("update TUser set age=18 where id=1");

query.executeUpdate();

刪除:

session.createQuery("delete from TUser where age>=18");

query.executeUpdate();

4.分組與排序

Order by子句:

from TUser user order by user.name, user.age desc

Group by子句和Having子句

"select count(user), user.age from TUser user group by user.age having count(user)>10"

5.參數邦定

通過順序占位符?來填充參數:

1)hibernate 2 中通過session.find方法來填充

session.find("from TUser user where user.name=?", "Erica", Hibernate.STRING);

多個參數的情況:

Object[] args = new Object[] {"Erica", new Integer(20)};

Type[] types = new Type{Hibernate.STRING, Hibernate.INTEGER};

session.find("from TUser user where user.name=? and user.age=?", args, types);

2)通過Query接口進進行參數填充:

Query query = session.createQuery("from TUser user where user.name=? and user.age>?");

query.setString(0,"Erica");

query.setInteger(1, 20);

通過引用占位符來填充參數:

String hql = "from TUser where name=:name";

Query query = session.createQuery(hql);

query.setParameter("name","Erica");

甚至可以將查詢條件封裝為一個JavaBean

class UserQuery {

private String name;

private Integer age;

//getter and setter

}

String hql = "from TUser where name=:name and age=:age";

Query query = session.createQuery(hql);

UserQuery uq = new UserQuery();

uq.setName("Erica");

uq.setAge(new Integer(20));

query.setProperties(uq); //會調用里面的getter?

query.iterate();

6.聯合查詢

也可以使用 inner join,left outer join, right out join, full join

排列組合:form TUser, TAddress

轉自:http://www.51test.net/show/469304.html

總結

以上是生活随笔為你收集整理的java如何写外键关联_JAVA基础:Hibernate外键关联与HQL语法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。