Mybatis實現(xiàn)分頁的注意點
前面的話:使用攔截器給Mybatis進(jìn)行分頁的教程在網(wǎng)上有很多,這里記錄的主要是我在使用的時候中間走的彎路,記錄下來,也好給后面想要學(xué)習(xí)Mybatis分頁攔截的小伙伴們提供點幫助。
1. 攔截器獲取參數(shù),判斷是否有Page類
1) 使用ThreadLocal 獲取
//獲取ThreadLocal
private static ThreadLocal<Page> pageLocal = new ThreadLocal<Page>();
private Page getPage() {
return pageLocal.get();
}
2) 從boundsql里面獲取
BoundSql boundSql = delegate.getBoundSql();
Object parameterObject = boundSql.getParameterObject();
Page page = this.getPage(parameterObject);
private Page getPage(Object parameterObject) {
Page page = null;
if (parameterObject instanceof Page) {
page = (Page) parameterObject;
} else if (parameterObject instanceof Map) {
for (Object val : ((Map<?, ?>) parameterObject).values()) {
if (val instanceof Page) {
page = (Page) val;
}
}
}
return page;
}
2. 重載plugin方法
@Override
public Object plugin(Object target) {
if (target instanceof StatementHandler) {
return Plugin.wrap(target, this);
} else {
return target;
}
}
總結(jié)
以上所述是小編給大家介紹的Mybatis實現(xiàn)分頁的注意點,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
一文解決System.in關(guān)閉后無法再繼續(xù)使用流的問題
這篇文章主要給大家介紹如何解決System.in關(guān)閉后無法再繼續(xù)使用流的問題,文中有詳細(xì)的解決方法和代碼示例,具有一定的參考價值,需要的朋友可以參考下2023-07-07
劍指Offer之Java算法習(xí)題精講字符串操作與數(shù)組及二叉搜索樹
跟著思路走,之后從簡單題入手,反復(fù)去看,做過之后可能會忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會發(fā)現(xiàn)質(zhì)的變化2022-03-03

