資源簡介
【核心代碼】
/**
* 攔截后要執行的方法
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public Object intercept(Invocation invocation) throws Throwable {
Object param = invocation.getArgs()[1];
//如果參數為空,直接直接返回
if (null == param) {
return invocation.proceed();
}
//獲取分頁參數對象
PageVO pageVO = getPageParam(param);
if (null != pageVO) {
//查詢符合條件的總記錄數
int totalCount = getQueryCount(
(Executor)invocation.getTarget(), (MappedStatement)invocation.getArgs()[0],
parameter, (RowBounds)invocation.getArgs()[2], (ResultHandler<?>)invocation.getArgs()[3]);
//設置數據總條數
pageVO.setTotalSize(totalCount);
//查詢符合條件的分頁數據行記錄
if (totalCount <= 0) {
return Arrays.asList(new PageResultVO(pageVO, new ArrayList<Object>(0)));
}
return Arrays.asList(new PageResultVO(pageVO, (List<Object>)invocation.proceed()));
}
//返回查詢結果
return invocation.proceed();
}
/**
* 獲取分頁總數據條數
*
* @param executor
* @param ms
* @param parameter
* @param rowBounds
* @return
*/
protected int getQueryCount(Executor executor, MappedStatement ms, Object param,
RowBounds rowBounds, ResultHandler<?> resultHandler) throws Throwable {
int totalCount = 0;
//查詢分頁總記錄數
List<Object> list = executor.query(
ms.getConfiguration().getMappedStatement(
new StringBuilder(ms.getId()).append(suffix).toString()),
param, rowBounds, resultHandler);
if (null != list
&& list.size() == 1) {
totalCount = (Integer)list.get(0);
}
return totalCount;
}
/**
* 獲取分頁參數
*
* @param param
* @return
*/
@SuppressWarnings({ "unchecked"})
protected PageVO getPageParam(Object param) {
PageVO pageVO = null;
//如果參數為分頁對象則直接返回
if (param instanceof PageVO) {
pageVO = (PageVO)param;
}
//如果參數不是Map對象則直接返回
if(!(param instanceof Map)){
return pageVO;
}
//迭代獲取分頁對象
ParamMap<Object> paramMap = (ParamMap<Object>)param;
if (null != paramMap) {
for(Iterator<Map.Entry<String, Object>> iterator = paramMap.entrySet().iterator(); iterator.hasNext();){
Map.Entry<String, Object> paramEentry = iterator.next();
//獲取到分頁對象則直接跳出迭代
if (paramEentry.getValue() instanceof PageVO) {
pageVO = (PageVO)paramEentry.getValue();
break;
}
}
}
return pageVO;
}
代碼片段和文件信息
package?com.demo.it.core.model;
import?java.io.Serializable;
import?java.util.Date;
import?java.util.UUID;
/**
?*?系統實體基礎VO。
?*
?*/
public?class?baseVO?implements?Serializable?{
private?static?final?long?serialVersionUID?=?3650949305552107900L;
/**
?*?數據Id唯一標示
?*/
private?String?id;
/**
?*?操作人賬號Id
?*/
private?String?createById;
/**
?*?操作人賬號
?*/
private?String?createByName;
/**
?*?操作人賬號Id
?*/
private?String?updateById;
/**
?*?操作人賬號
?*/
private?String?updateByName;
/**
?*?創建時間
?*/
private?Date?createTime;
/**
?*?更新時間
?*/
private?Date?updateTime;
public?baseVO()?{
super();
}
public?baseVO(String?id)?{
super();
this.id?=?id;
}
public?baseVO(String?id?String?updateById?String?updateByName)?{
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2016-03-24?13:12??demo\
?????文件????????1102??2016-01-18?09:23??demo\.classpath
?????文件????????1032??2016-01-13?16:22??demo\.project
?????目錄???????????0??2016-03-24?13:12??demo\.settings\
?????文件?????????119??2016-01-09?15:21??demo\.settings\org.eclipse.core.resources.prefs
?????文件?????????430??2016-01-18?09:23??demo\.settings\org.eclipse.jdt.core.prefs
?????文件??????????90??2016-01-09?15:21??demo\.settings\org.eclipse.m2e.core.prefs
?????文件?????????249??2016-01-09?17:56??demo\.settings\org.eclipse.wst.common.component
?????文件?????????172??2016-01-18?09:23??demo\.settings\org.eclipse.wst.common.project.facet.core.xm
?????文件??????????50??2016-01-13?16:22??demo\.settings\org.eclipse.wst.validation.prefs
?????文件????????3480??2016-01-18?09:22??demo\pom.xm
?????目錄???????????0??2016-03-24?13:12??demo\src\
?????目錄???????????0??2016-03-24?13:12??demo\src\main\
?????目錄???????????0??2016-03-24?13:12??demo\src\main\java\
?????目錄???????????0??2016-03-24?13:12??demo\src\main\java\com\
?????目錄???????????0??2016-03-24?13:12??demo\src\main\java\com\demo\
?????目錄???????????0??2016-03-24?13:12??demo\src\main\java\com\demo\it\
?????目錄???????????0??2016-03-24?13:12??demo\src\main\java\com\demo\it\core\
?????目錄???????????0??2016-03-24?13:15??demo\src\main\java\com\demo\it\core\model\
?????文件????????2480??2016-03-24?13:14??demo\src\main\java\com\demo\it\core\model\ba
?????文件????????1607??2016-03-24?13:14??demo\src\main\java\com\demo\it\core\model\OrderVO.java
?????文件?????????997??2016-03-24?13:14??demo\src\main\java\com\demo\it\core\model\PageResultVO.java
?????文件????????4271??2016-03-24?13:14??demo\src\main\java\com\demo\it\core\model\PageVO.java
?????目錄???????????0??2016-03-24?13:12??demo\src\main\java\com\demo\it\core\orm\
?????目錄???????????0??2016-03-24?13:12??demo\src\main\java\com\demo\it\core\orm\plugins\
?????目錄???????????0??2016-03-24?13:13??demo\src\main\java\com\demo\it\core\orm\plugins\mybatis\
?????文件????????3835??2016-03-24?13:13??demo\src\main\java\com\demo\it\core\orm\plugins\mybatis\MybatisPaginationInterceptor.java
?????目錄???????????0??2016-03-24?13:12??demo\src\test\
?????目錄???????????0??2016-03-24?13:12??demo\src\test\java\
?????目錄???????????0??2016-03-24?13:12??demo\src\test\java\com\
?????目錄???????????0??2016-03-24?13:12??demo\src\test\java\com\lqkj\
............此處省略74個文件信息
- 上一篇:Sturts敏感字過濾及校驗
- 下一篇:java mybatis 分頁插件 代碼
評論
共有 條評論
相關資源
- java mybatis 分頁插件 代碼
- 手機端網頁選擇地址插件
- springboot2log4j2-動態mybatis
- 超市訂單管理系統(spring boot+mybatis
- 兼容PC和移動設備的日期選擇jquery插件
- Swiper3插件 入門級
- mybatis 代碼生成器
- Java 實現表格的分頁技術
- MyBatis基礎教程.pptx
- Mergely(左右文本對比插件)
- jQuery便條插件+jStickyNote
- android andbatdog電池監控
- android安裝應用插件 Cordova插件
- Mybatsi-plus逆向模型
- spring boot mybatis jsp前端展示對mysql增刪
- 用ssmspring+springmvc+mybatis開發的的一個
- SSM項目入門級(Spring+SpringMVC+Mybatis框
- SpringMVC整合shiro、mybatis、redis的
- Spring mvc整合mybatis.rar
- springspringMVCmybatis實現用戶增刪改查的
- excel插件實現html表格生成excel
- java 博客系統源碼( Docker SpringBoot M
- maven+springmvc+mybatis+log4j 入門級
- spring+springmvc+mybatis搭建的一個考勤管
- 權限管理系統SpringMvc+Spring+MyBatis框架
- 基于 SSM的后臺管理系統DEMO
- android 手機上調用插件打開網頁
- mysql分頁的六種方法.docx
- android Sqlite 分頁
- jquery動態添加tab簽(CleverTabs插件)