當前位置:首頁 » 編程語言 » hibernate分頁sql語句
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

hibernate分頁sql語句

發布時間: 2022-08-24 17:39:55

㈠ 使用hibernate時報錯 跟sql語句有關

你分頁寫錯了,mysql中是用limit來分頁的,select * from table limit start,pageNum

說明:
start:取數據的定位點 [開始是從0開始]
pageNum:每次取多少

比如:start=0|ageNum=5 ,也就是select * from table limit 0,5
那麼就是說,取1-6 條數據,

㈡ HIBERNATE中分頁查詢的方法問題

query.setFirstResult(currentPage * 15);//這是說從第幾條開始,一般用參數來計算更靈活

query.setMaxResults(15);//這一頁顯示最大條

想分頁的話,這兩個方法都要傳參數來控制,我的代碼
/** pageSize:最大數 pageNo:最小數 */
public List DEPT_QUERY(final int pageSize,final int pageNo)//帶分頁
{
list=super.getHibernateTemplate().executeFind(
new HibernateCallback(){
public Object doInHibernate(Session s)
throws HibernateException, SQLException {
Query q=s.createQuery(DEPT_QUERY_SQL);//接受SQL語句,並賦給q
q.setFirstResult(pageSize*(pageNo-1));
q.setMaxResults(pageSize);
return q.list();//返回當前的q.list
}
}
);
return list;//返回list,在業務層調用的時候取出list就是這一頁的集合
}

㈢ hibernate+struts2分頁查詢的問題,永遠都是第一頁,為什麼第一條sql語句對,第二條變樣了

因為sql server 沒有直接的分頁功能,hibernate 採用了top的方式進行間接的分頁方式,第一頁top pageSize,第二頁 top pageSize*2,但前pageSize條記錄被丟棄了,第二頁的數據是從pageSize+1開始取的.

同理,第三頁的數據查詢了pageSize*3條數據,前pageSize*2條記錄丟棄,只要pageSize*2+1到pageSize*3之間的數據...

㈣ Hibernate 實現分頁查詢原理分析

樓主你沒說清楚呢 無論是什麼ORM原理都是一樣使用jdbc發送的sql語句 分頁也是一樣的 只不過Hibernate 把這一切都封裝的非常美麗 還有分頁方法也有好多種呢 你說的是那種呢
還有懶載入有點不一樣哦 樓主 你需要說明白你的具體做法 才好解釋呢

㈤ 用了hibernate是不是就不用寫sql語句了,直接調用裡面封裝好的分頁還要自己再寫嗎

hibernate有一個跟sql非常類似的語句 叫HQL語句,所以。。你還是得寫。但是hibernate提供了很多方便的方法

㈥ 用Hibernate給MYSQL分頁的「真」與「假」

你說的有點片面,你用到limit只是mysql會用到,如果是oracle或者sql server那麼sql語句就不一樣了,使用hibernate或者ibatis的原因在於它是持久層對象化框架,他可以自動適應資料庫,hibernate如果你告訴他分頁,他會根據當前資料庫來翻譯分頁語句

㈦ hibernate訪問oracle分頁SQL語句rownum子查詢問題

第一個是從第幾條開始,第二個是每頁幾條。
你看看你資料庫裡面的數據夠不夠分頁,你這樣只寫兩句就分頁是不夠的。
page = Paginator.showPage(, hql, paramValues, pageCurrent, pageSize);

/*
* 利用hql實現翻頁
*/
public static Page showPage(PersistentBaseDao p, String hql,
Object[] paramValues, int pageCurrent, int pageSize) {
// 入口參數校驗(無)
if (p == null) {
// log.debug("Paginator.p.hql is Empty");
}
if (hql.equals("") || hql == null) {
// log.debug("Paginator.showPage.hql is Empty");
}
if (p == null) {
// log.debug("Paginator.showPage.p is Empty");
}
PersistentBaseDao = (PersistentBaseDao) p;
// 如果當前頁大於>總的頁數,則讓當前頁等於總頁數
int tempPageCount =0;

if (paramValues == null) {
tempPageCount = .getPageCount(hql, (Object[]) null, pageSize);
} else {
tempPageCount= .getPageCount(hql, paramValues, pageSize);
}
if (pageCurrent > tempPageCount) {
pageCurrent = tempPageCount;
}
// 如果當前頁大於<1,則讓當前頁等於1
if (pageCurrent < 1) {
pageCurrent = 1;
}
// 調用.serarch()方法
if (paramValues == null) {
page = .search(hql, pageCurrent, pageSize);
} else {
page = .search(hql, paramValues, pageCurrent, pageSize);
}
// 為page對象設置當前頁的屬性
page.setPageCurrent(pageCurrent);
// 將page對象放在request對象中
return page;
}

/*
* 利用List實現翻頁
*/
@SuppressWarnings("unchecked")
public static Page showPage(List list, int pageCurrent, int pageSize) {
// 入口參數校驗(無)
if (list.isEmpty()) {
// log.debug("Paginator.showPage.list is Empty");
}
// 如果當前頁大於>總的頁數,則讓當前頁等於總頁數
if (pageCurrent > page.getPageCount()) {
pageCurrent = page.getPageCount();
}
// 如果當前頁大於<1,則讓當前頁等於1
if (pageCurrent < 1) {
pageCurrent = 1;
}
List ls = new ArrayList();
// 根據得到的list轉化為page對象
if (list.size() % pageSize == 0) {
page.setPageCount((list.size() / pageSize));
} else {
page.setPageCount((list.size() / pageSize) + 1);
}
page.setPageCurrent(pageCurrent);
page.setRecordCound(list.size());
int stag = (pageCurrent - 1) * pageSize;
int etag = pageCurrent * pageSize;
for (int i = stag; i < list.size() && i < etag; i++) {
ls.add(list.get(i));
}
page.setDataList(ls);
return page;
}

㈧ hibernate中純sql語句查詢,當分頁的時候會第二頁以後會多出一列行號(包含第二頁)

hibernate 分頁查詢的時候會將你的查詢語句結果作為結果集然後在此之上查詢*
select * from (***********) where rownum<30(←這是第一頁每頁三十個)
select * from
(
select * from (***********) where rownum<60
)
where rownum_>30(←這是第二頁每頁三十個)
所以多出來一列 具體解決方式....... 我也不太清楚我也碰到了這個問題 原因找到了 我正在想辦法處理