前面的話:使用攔截器給Mybatis進行分頁的教程在網上有很多,這里記錄的主要是我在使用的時候中間走的彎路,記錄下來,也好給后面想要學習Mybatis分頁攔截的小伙伴們提供點幫助。
1. 攔截器獲取參數,判斷是否有Page類
1) 使用ThreadLocal 獲取
1
2
3
4
5
|
//獲取ThreadLocal private static ThreadLocal<Page> pageLocal = new ThreadLocal<Page>(); private Page getPage() { return pageLocal.get(); } |
2) 從boundsql里面獲取
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
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方法
1
2
3
4
5
6
7
8
|
@Override public Object plugin(Object target) { if (target instanceof StatementHandler) { return Plugin.wrap(target, this ); } else { return target; } } |
總結
以上所述是小編給大家介紹的Mybatis實現分頁的注意點,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!
原文鏈接:http://blog.csdn.net/cubic__/article/details/75353932