hibernate 通用分頁,查詢分頁的泛型類
寫在泛型dao層的實現類裡,可以達到寫一次,然後繼承這個實現類,傳入各自的型別就可以達到很高的複用效果,增加開發效率
也可以作為查詢的分頁,自己動態構造查詢的語句,然後對應好傳入的引數,動態構造查詢語句的時候StringBuffer,直接用string型別效率低。
向上具體的方法,讓後上分頁的util
/**
* Description:獲取一個分頁資料,包含list和totalCount
*
* @return
*/
public PageUtil<M> getPageData(final String hql, final int offset,
final int pageSize, final Object... paramlist) {
PageUtil<M> page = new PageUtil<M>();
List<M> list = this.listPage(hql, offset, pageSize, paramlist);
String hql2 = "select count(*) " + hql;
Number tempCountAll = this.unique(hql2, paramlist);
int totalCount = tempCountAll.intValue();
page.setList(list);
page.setTotalCount(totalCount);
return page;
}
/**
* Description: 按hql條件查詢語句返回分頁結果
*
* @return
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public List<M> listPage(final String hql, final int offset,
final int pageSize, final Object... paramlist) {
return hibernateTemplate.executeFind(new HibernateCallback() {
public List<M> doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = (Query) session.createQuery(hql);
if (paramlist != null) {
for (int i = 0; i < paramlist.length; i++) {
query.setParameter(i, paramlist[i]);
}
}
if (offset > -1 && pageSize > -1) {
query.setMaxResults(pageSize);
query.setFirstResult(offset);
}
return query.list();
}
});
}
/**
* Description: 按hql條件查詢語句返回分頁結果的唯一值
*
* @return
*/
public <T> T unique(final String hql, final Object... paramList) {
T countAll = (T) hibernateTemplate.execute(new HibernateCallback<T>() {
@SuppressWarnings("unchecked")
public T doInHibernate(Session session) throws HibernateException,
SQLException {
Query query = session.createQuery(hql);
if (paramList != null) {
for (int i = 0; i < paramList.length; i++) {
query.setParameter(i, paramList[i]);
}
}
return (T) query.setMaxResults(1).uniqueResult();
}
});
return countAll;
}
然後是PageUtil類
public class PageUtil<M> {
private List<M> list;
private Integer totalCount;
public List<M> getList() {
return list;
}
public void setList(List<M> list) {
this.list = list;
}
public Integer getTotalCount() {
return totalCount;
}
public void setTotalCount(Integer totalCount) {
this.totalCount = totalCount;
}
}
相關文章
- Hibernate 分頁查詢的一點疑惑
- Hibernate實現分頁查詢的原理
- Hibernate分頁查詢原理解讀
- MySQL的分頁查詢MySql
- Oracle的分頁查詢Oracle
- Lucene的分頁查詢
- Elasticsearch 分頁查詢Elasticsearch
- ssh 分頁查詢
- oracle分頁查詢Oracle
- 分庫分表後的分頁查詢
- Hibernate5.1+Sqlserver2000分頁查詢SQLServer
- Mybatis封裝分頁查詢的java公用類MyBatis封裝Java
- ThinkPhp框架:分頁查詢PHP框架
- 分頁查詢優化優化
- NET 集合分頁查詢
- MySQL 多表查詢分頁MySql
- 分頁查詢重構
- Oracle分頁查詢格式Oracle
- 分頁總頁數計算方法 所有分頁通用
- SSH框架下的分頁查詢框架
- ssh框架中的分頁查詢框架
- 分頁查詢的排序問題排序
- indexdb實現分頁查詢Index
- AntDesignBlazor示例——分頁查詢Blazor
- MySQL分頁查詢優化MySql優化
- Oracle分頁查詢格式(十三)Oracle
- Oracle分頁查詢格式(十二)Oracle
- Oracle分頁查詢格式(十一)Oracle
- Oracle分頁查詢格式(八)Oracle
- Oracle分頁查詢格式(九)Oracle
- Oracle分頁查詢格式(十)Oracle
- oracle分頁查詢語句Oracle
- Oracle分頁查詢之order byOracle
- oracle sql分頁查詢(一)OracleSQL
- 分頁查詢初接觸
- 關於批次分頁查詢
- 批次分頁查詢問題?
- 通用的SQL Server資料庫查詢分頁儲存過程SQLServer資料庫儲存過程