hibernate中帶查詢條件的分頁
所謂分頁,從資料庫中分,則是封裝一個分頁類。利用分頁物件進行分頁。
但,分頁往往帶查詢條件。
分頁類的三個重要資料:【當前頁碼數】,【資料庫中的總記錄數】,【每頁顯示的資料的條數】
原理:select * from 【表名】 where 【欄位名】 like 【'%條件%'】 limit 【開始查詢的索引】,【每頁顯示的資料】
帶查詢條件的分頁分兩步
(1)第一步:查詢出符合條件的資料的總條數
---->select count(*) from 【表名】 where 【欄位名】 like 【條件】
(2)第二步:提供三個重要資料,生成分頁物件,然後查詢資料庫中指定頁碼的資料
---->select * from 【表名】 where 【欄位名】 like 【'%條件%'】 limit 【開始查詢的索引】,【每頁顯示的資料】
hibernate框架下的分頁【帶查詢條件的分頁核心原始碼】
(1)獲取符合條件的的資料的總記錄數的方法
/**
* 獲取資料庫中帶查詢條件的資料的記錄數
* @Title: countByName
* @Description: TODO(這裡用一句話描述這個方法的作用)
* @param seachName 查詢條件
* @return
* @return Integer 返回符合條件的資料的總記錄數
* @author 尚曉飛
* @date 2014-7-1 上午9:22:14
*/
public Integer countByName(final String seachName){
return super.getHibernateTemplate().execute(new HibernateCallback<Integer>() {
public Integer doInHibernate(Session session)
throws HibernateException, SQLException {
Query query=session.createSQLQuery("select count(*) from sys_user where sys_user_name LIKE ?");
query.setParameter(0, "%"+seachName+"%");
Number number= (java.lang.Number) query.uniqueResult();
return number.intValue();
}
});
}
(2)跟據符合條件的資料總記錄數,前臺提供的當前頁碼數,每頁顯示的資料條數,生成分頁物件
//獲取分頁物件(當前頁碼數,符合條件的資料的總記錄數,每頁顯示的資料條數)
this.page=new Page(num, countRecords, pageRecords);
(3)根據分頁物件,查詢條件,利用hibernate框架進行分頁(可以用sql語句分頁,此處用hql分頁,也是hibernate的分頁)
/**
*
* @Title: queryByQueryName
* @Description: TODO(這裡用一句話描述這個方法的作用)
* @param queryName 查詢條件的引數
* @param firstResult 從第幾條資料開始查詢(分頁物件提供)
* @param maxResult 每頁顯示的資料條數(分頁物件提供)
* @return
* @return List<SysUser> 返回指定頁碼的資料集合
* @author 尚曉飛
* @date 2014-7-1 下午5:02:07
*/
@SuppressWarnings("unchecked")
public List<SysUser> queryByQueryName( final String queryName,final Integer firstResult,final Integer maxResult){
return (List<SysUser>)super.getHibernateTemplate().executeFind(new HibernateCallback<List<SysUser>>() {
@Override
public List<SysUser> doInHibernate(Session session)
throws HibernateException, SQLException {
Query query=session.createQuery("from SysUser where sysUserName like ?");//帶查詢條件的分頁hql語句
query.setParameter(0,"%"+queryName+"%");
query.setFirstResult(firstResult);//從第幾條資料開始查詢
query.setMaxResults(maxResult);//每頁顯示多少條資料
return query.list();
}
});
}
(4)分頁類【僅供參考,省去set,get方法,程式碼簡單,思路重要】
public class Page{
//每頁顯示資料條數
private int pageSize;
//當前頁碼數
private int pageNum;
//資料庫中總記錄數
private int rowCount;
//總頁數
private int pageCount;
//從多少條記錄開始查詢
private int rowStart;
//是否有上一頁
private boolean hasPrevious=false;
//上一頁
private int previousPage;
//首頁
private int firstPage;
//是否有下一頁
private boolean hasNext=false;
//下一頁
private int nextPage;
//末尾頁
private int lastPage;
//每頁顯示的頁碼數
private int everyPageCount=10;
//每頁開始的頁碼數
private int everyPageStart;
//每頁結束的頁碼數
private int everyPageEnd;
public Page(){}
public Page(String pageSize, String pageNum, int rowCount) {
this.pageSize=pageSize==null?10:Integer.parseInt(pageSize);
this.pageNum=pageNum==null?1:Integer.parseInt(pageNum);
this.rowCount=rowCount;
//總頁數
this.pageCount=(int)Math.ceil(this.rowCount*1.0/this.pageSize);
//當刪除最後一頁資料時,會造成pageNum>pageCount,所以賦值。
if(this.pageNum>this.pageCount){
this.pageNum=this.pageCount;
}
//每次從第幾條記錄開始查 select * from onesong limit rowStart ,pageSize
this.rowCount=(this.pageNum-1)*this.pageSize;
//當頁碼數大於1則存在上一頁,和首頁
if(this.pageNum>1){
this.hasPrevious=true;
this.previousPage=this.pageNum-1;
this.firstPage=1;
}
//當頁碼數小於1則存在下一頁,和尾頁
if(this.pageNum<this.pageCount){
this.hasNext=true;
this.nextPage=this.pageNum+1;
this.lastPage=this.pageCount;
}
//每頁顯示的頁碼數的開始和結束
this.everyPageStart=(this.pageNum-this.pageSize/2)<=0?1:(this.pageNum-this.pageSize/2);
this.everyPageEnd=(this.everyPageStart+this.everyPageCount-1)>=this.pageCount?pageCount:(this.everyPageStart+this.everyPageCount-1);
}
}
相關推薦
hibernate中帶查詢條件的分頁
所謂分頁,從資料庫中分,則是封裝一個分頁類。利用分頁物件進行分頁。 但,分頁往往帶查詢條件。 分頁類的三個重要資料:【當前頁碼數】,【資料庫中的總記錄數】,【每頁顯示的資料的條數】 原理:select * from 【表名】 where 【欄位名】 like 【'%條件%'】 limit
Hibernate中使用HQL進行分頁查詢
第一步 建立query物件 Query query = session.createQuery("xxxxxx”); 第二步 設定開始位置和每頁顯示記錄數 設定開始位置,firstResult 的內
MVC+Bootstrap+Drapper使用PagedList.Mvc支持多查詢條件分頁
pagedlist amp new 源代碼 post header this 當前 都是 前幾天做一個小小小項目,使用了MVC+Bootstrap,以前做分頁都是異步加載Mvc部分視圖的方式,因為這個是小項目,就隨便一點。一般的列表頁面,少不了有查詢條件,下面分享下Drap
FineReport生成帶查詢、分頁功能的報表
配置資料集 連線資料庫 點選定義資料庫連線: 設定資料庫連線基本引數: 驅動器:oracle.jdbc.driver.OracleDriver URL:jdbc:oracle:thin:@URL:PORT:SID 配置資料集
Hibernate查詢,返回new物件(注意這個新定義的類要有建構函式),使用sql帶條件分頁查詢並且把結果顯示到一個物件的集裡面的解決方案
IIndexDaopackage com.ucap.netcheck.dao;import com.ucap.netcheck.combination.beans.IndexCombinationBean;import com.ucap.netcheck.common.P
extjs3 分頁操作(帶查詢條件),獲取頁碼、開始行、分頁大小
一、分頁操作 extjs3.x版本做分頁操作時,只需配置PagingToolbar 即可,總的來說還是比較方便的,但是預設情況下是不能進行帶查詢條件的分頁操作的,如何解決呢? //xxx表示檔名,xxx.js xxx.prototype.grid=function(){
【Layui】帶查詢條件的分頁
author:咔咔 wechat:fangkangfk 這個前端UI框架是真的讓人又愛又恨吶!想了很久的方案才行的通 這是全部原始碼: {include file="../../../application/admin/view/public/
【spring data jpa】帶有條件的查詢後分頁和不帶條件查詢後分頁實現
一.不帶有動態條件的查詢 分頁的實現 例項程式碼: controller:返回的是Page<>物件 @Controller@RequestMapping(value = "/egg") publicclass EggController { @
JSP通用分頁元件,帶查詢條件
—— 如果一段程式碼重複出現的次數多了,我們就需要把它獨立出來! 分頁功能的程式碼就是這樣的,在需要展示列表的頁面,我們基本都需要加上分頁功能,如果某天boss想要修改分頁功能的樣式~,天吶~~,我們不能去一個一個的改吧。 下邊給大家分享一個自己封裝的通用分
通用的可帶查詢條件的SQL語句的分頁儲存過程(2)
程式碼二: CREATE PROCEDURE pagination @tblName varchar(255), – 表名 @strGetFields varchar(1000) = ‘*’, – 需要返回的列 @fldName varch
4 Springboot中使用redis儲存集合資料,並模擬條件查詢、分頁讀取
前面幾篇講了使用redis儲存單個物件,自動快取、更新、刪除的做法,在實際專案中,更常用的是分頁查詢集合資料,條件查詢(譬如按照新增時間倒序排列)。 redis本身是不提供條件查詢的,因為是一個非關係型資料庫,那麼其實通過一些手段,也是能完成條件查詢的,尤其是有順序的條件查
MVC呼叫儲存過程實現分頁,帶查詢條件
alter procedure P_GetPagedUserInfoByCondition @PageSize int,--表示每頁要顯示的記錄數 @CurrentPageIndex int,--表示當前要顯示第幾頁的資料 @RecordCount int output,--表示滿足條
TP3.2分頁第二頁帶查詢條件顯示(兩種解決辦法)
先看看手冊的....然而怎麼都不行,最後給成GET模式 直接ok帶入查詢條件如果是POST方式查詢,如何確保分頁之後能夠保持原先的查詢條件呢,我們可以給分頁類傳入引數,方法是給分頁類的parameter屬性賦值$count = $User->where($ma
Hibernate中多表查詢的分頁
Session s=HibernateUtil.currentSession(); Transaction t=s.beginTransaction(); Query q=s.createQuery("from Trade t,Aclrole r where t.tra
Hibernate查詢方法總結(包括條件分頁查詢、外來鍵id查詢)
每天進步一點點,最近做專案用到了很多的hibernate的查詢方法。正好騰出時間來總結,希望對自己和他人都有幫助。 首先非常感謝施楊 's think out 和suntao1983做的總結,幫我解決的很多問題。 hibernate 的 六種基本查詢方法:分別是HQL查詢
bos 第4 (區域excel批量導入、區域通用分頁查詢、分區的添加、分區多條件分頁查詢、分區導出excel)
sea htm 不能 長安 基金會 格式 address ret body BOS項目筆記 第4天 今天內容安排: 1、區域批量導入功能 jQuery OCUpload(一鍵上傳插件)、apache POI、pinyin4j 2、實現區域的分頁查詢 3、對分頁代碼重構
PHP連接數據庫實現多條件查詢與分頁功能——關於租房頁面的完整實例操作
ots cnblogs 信息 val 租房 btn earch 拼接 round 租房頁面如圖: 代碼如下: <!DOCTYPE html><html> <head> <meta charset="UTF-8"
8.修改 按條件查詢商品 分頁
edi spl stat htm != pic check ren lib 修改商品的原理圖 jsp頁面 edit.jsp <%@ page language="java" pageEncoding="UTF-8"%> <%@ taglib pre
springboot jpa mongodb 多條件分頁查詢
sort ndt int integer mongod nbsp boot amp success public Page<Recorded> getRecordeds(Integer page, Integer size, Recorded recorded)
spring jpa 帶參數分頁查詢(一)
entity ndb 情況 serializa cti rep ppi image repo 1、寫個接口繼承JpaRepository @NoRepositoryBean public interface BaseRepository<T,PK extends