Hibernate查詢語句,請高手解釋一下【200分】
JPQL語句支持兩種方式的參數定義方式: 命名參數和位置參數。
。在同一個查詢語句中只允許使用一種參數定義方式。
命令參數的格式為:“: +參數名”例:Query query = *Query("select p from Person p where *id=:Id");*ameter("Id",new Integer(1));位置參數的格式為“?+位置編號”例:Query query = *Query("select p from Person p where *id=?1");*ameter(1,new Integer(1));。
hql 查詢語句
假設你的類這樣寫:
class Student
{
public student ()
{}
public student (string name, id)
setName () {}
setId () {}
}
那么第一個QL結果是:
s = new student () ;
*e (name) ;
* (id) ;
第二個:
s = new student (name, id) ;
這是猜測的,你用的應該是Hibernate 3吧。
你可以試試。
hibernate sql查詢語句
既然你的項目繼承了hibernateDaoSupoort,并且是由spring來管理的那么,我想應該實在*中配置的sessionFactory或者getTemplate來注入數據庫連接的,既然如此在hibernateDaoSupport的繼承類中可以得到寫很多的封裝查詢、添加、刪除操作,只需要把方法加入一個抽象類去實現就好了
不過你要通過sql語句去實現的話
因為已經注入了數據庫連接到hibernateDaoSupport中.所以你也繼承到了兩個數據庫連接方法getSession() 和 getHibernateTemplate()
直接用就可以了
HQL怎么查子查詢的條數
子查詢是SQL語句中非常重要的功能特性,它可以在SQL語句中利用另外一條SQL語句的查詢結果,在Hibernate中HQL查詢同樣對子查詢功能提供了支持。如下面代碼所示:
List list=*Query(“from Customer c where 1>(select count(o) from * o)”).list();
上面的程序查詢訂單數超過1的所有客戶,因此和上面子查詢HQL語句對應的SQL語句為:
Select * from Customer c where 1>(select count(*) from Order o where *=*er_ID);
如果子查詢返回多條記錄,則可以使用下面關鍵字:
all:表示子查詢語句返回的所有記錄
any:表示子查詢語句返回的任意一條結果
some:與”any”等價
in:與”=any”等價
exists:表示子查詢語句至少返回一條記錄
例如:查詢存在一條訂單價格大于100的客戶
From Customer c where 100>any(select * from * o);
如果在子查詢中操作集合,HQL提供了一組操縱集合的函數和屬性:
size()函數和size屬性:獲得集合中元素的數量
minIndex()函數和minIndex屬性:對于建立了索引的集合獲得最小索引值(關于集合索引參考第一部分映射值類型集合)
minElement()函數和minElement屬性:對于包含基本類型的元素集合,獲得集合中值最小的元素
maxElement()函數和maxElement屬性:對于包含基本類型元素的集合,獲得集合中值最大的元素
element()函數:獲得集合中所有元素
例如:查詢訂單數大于0的客戶
From Customer c where size(*)>0;或者From Customer c where *>0;
以上HQL語句會生成類似如下的SQL語句:
Select * from customer c where 0>(select count(*) from order where o. customer_ID =*);
關于Hibernate的三種查詢方式
hql提供了更接近于傳統SQL語句的查詢語法,容易過度吧,官方推薦使用,它提供強大的查詢功能。一般使用這種查詢。
Criteria查詢,可移植性好,用起來也很方便,當你的查詢條件很多時,可用Example創建一查詢依據,查出屬性與之類似的對象,代碼簡潔運用很方便。
Native SQL一般在遇到很復雜的查詢條件時使用。
說白了,靈活運用就行,在不同情況下使用不同的解決方案,建議你多看些實例,見得多了用起來就比較容易判斷該用哪一個。
如果問題解決,請點贊采納,謝謝!!!
如何用hibernate直接進行SQL語句查詢
我寫個簡單的例子,樓主可以參考下
public int getLogin(String username,String password)
{ String sql="select * from user_table where username=? and password=?";
SQLQuery query=getSession().createSQLQuery(sql).addEntity(*);
*ing(0,username);
*ing(1,password);
return *nt(*Result().toString());
}
public static void main(String[] args) {
new UserTableDAO().getLogin("zhang","yuan");
}
轉載請注明出處華閱文章網 » hqlin語句查詢語句