basedao
需求:按名字分頁查詢對應書籍資訊
原生sql
hql實現不了的功能,可以考慮使用原生sql
1、多表(5+)聯查
2、未配置對映檔案中關係
檢視對映
場景select * from 3表聯查
select @rowno:=@rowno + 1 as rowno,a.* from tablename a,(select @rowno:=0) b
原生sql:
sqlquery sqlq = session.createsqlquery("select tname,tage from teacher ");
//指定查詢出來的列的名稱和類別
sqlq.addscalar("tname", hibernate.string);
sqlq.addscalar("tage", hibernate.integer);
//有條件的
sqlquery sqlq = session.createsqlquery("select * from teacher where tname like :tname and tage > :tage");
teacher t = new teacher();
t.settage(26l);
t.settname("%王%");
sqlq.addentity("t",teacher.class);
sqlq.setproperties(t);
//統計 分組
sqlquery sqlq=session.createsqlquery("select s.sclass,count(*) c from students s group by s.sclass order by c desc");
sqlq.addscalar("sclass", hibernate.string);
sqlq.addscalar("c", hibernate.integer);
//連線查詢 (沒有fetch,只有在hql中才有)
// sqlquery sqlq=session.createsqlquery(「select s.,t. from students s left join tands ts on s.sid=ts.studentid left join teachers t on ts.teacherid=t.tid where t.tname like ?」);
// sqlq.addentity(「s」,student.class);
// sqlq.addentity(「t」,teacher.class);
// sqlq.setstring(0, 「%李四%」);
分頁//原生sql方式 其他方式也差不多
int pagerow=2;//每頁顯示多少行
int currpage=2;//當前頁
sqlquery sqlq=session.createsqlquery("select t.* from teachers t");
sqlq.addentity("t",teacher.class);
sqlq.setfirstresult((currpage-1)*pagerow);
sqlq.setmaxresults(pagerow);
listts=sqlq.list();
for(teacher t : ts)
hibernate sqlquery 查詢char型別結果為乙個字元解決方法
在使用hibernate的原生態sql對oracle進行查詢時,碰到查詢char型別的時候始終返回的是乙個字元,開始認為應該是hibernate在做對映的把資料型別給對映成char(1),在經過查詢網上的一些資料,得知產生這個問題的主要原因確實是hibernate再查詢oracle的時候,將char自動對映成character(varchar的子集)型別,現有以下幾種解決方法:
1:將你要查詢的實體轉換成實體bean,使用hql查詢,這樣就不存在字段對映的問題了,但是這樣比較麻煩;
2:可以使用hibernate中的addscalar(string arg,type type)來自定義返回欄位的型別,如:
this.getsession()
.createsqlquery(「select id,name,state from tb」)
.addscalar(「id」, hibernate.string)
.addscalar(「name」, hibernate.string)
.addscalar(「state」, hibernate.string)
.list();
這樣就可以解決,但是這樣的話,必須把所有要查詢的字段進行定義,在字段比較多的時候,就相對比較麻煩;
Hibernate使用原生態SQL語句
我前面也有寫過一篇hibernate使用原生態sql語句的方法。但那種方法是新增實體類。沒有表,但要反射實體類進行對映,也就是要寫實體類。有興趣的可以在我部落格裡找到那篇看看。這次我記錄的是不需要寫實體類,資料庫也不需要做檢視。方法如下。1.string sql 這裡面寫的是sql語句,在資料庫中能...
yii2 執行原生態的sql語句
搜尋 connection yii db user id yii user id print r user id 報名的賽事 sql select ybm from bm userybm where user id user id command connection createcommand s...
嫦 娥,名人,原生態的Blog
我這個blog,本來是調侃it的 今天順道也調侃一下網際網路熱點 我坦白,我偶爾是看mop的 雖然我覺得他的主力人群應該是20歲左右的人 mop,以及其他 捧紅 過很多女子 至少是網路上有了一定知名度 這些人,我大概是知道的 無論是自戀狂也好 還是智商高也好 或者自暴床事也罷 我沒有太關注過 最近,...