pageinterceptor上面的@intercepts註解和@signature註解,會確定需要攔截的類和方法,然後使用動態**為executor建立**物件。
攔截的具體邏輯是在intercept方法裡面:
public object intercept(invocation invocation) throws throwable else
list resultlist;
//呼叫方法判斷是否需要進行分頁,如果不需要,直接返回結果
if (!dialect.skip(ms, parameter, rowbounds))
//呼叫方言獲取 count sql
string countsql = dialect.getcountsql(ms, boundsql, parameter, rowbounds, countkey);
countkey.update(countsql);
//當使用動態 sql 時,可能會產生臨時的引數,這些引數需要手動設定到新的 boundsql 中
for (string key : additionalparameters.keyset())
//執行 count 查詢
object countresultlist = executor.query(countms, parameter, rowbounds.default, resulthandler, countkey, countboundsql);
long count = (long) ((list) countresultlist).get(0);
//處理查詢總數
//返回 true 時繼續分頁查詢,false 時直接返回
if (!dialect.aftercount(count, parameter, rowbounds))
}//判斷是否需要進行分頁查詢
if (dialect.beforepage(ms, parameter, rowbounds))
//執行分頁查詢
resultlist = executor.query(ms, parameter, rowbounds.default, resulthandler, pagekey, pageboundsql);
} else
} else
return dialect.afterpage(resultlist, parameter, rowbounds);
} finally
}
Mybatis之分頁外掛程式 PageHelper
外掛程式叫做pagehelper如果你也在用mybatis,建議嘗試該分頁外掛程式。個人認為非常好用 該外掛程式目前支援oracle,mysql,mariadb,sqlite,hsqldb,postgresql六種資料庫分頁。第一步 匯入jar包 第二步 需要在sqlmapconfig.xml,配置...
mybatis學習之分頁
分頁一般分為物理分頁 先查詢所有值再分頁輸出,邏輯分頁 直接分頁查詢輸出,mybatis支援物理分頁,如下 1 物理分頁 select id findstudents resultmap studentresult select from t student order by id asc sele...
mybatis分頁外掛程式
其實吧,這個分頁的封裝是我從mybatis實戰上抄的,然後又重構了下 形成了自己的。現在之所以會記錄一下,主要原因是出現了質變 對foreach的支援,而解決這個問題的過程中,我感覺,應該基本上使用上沒有多少侷限行了。下面說說實際的吧。基本的設計思路,是使用mybatis外掛程式,首先是下面這一串註...