嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 5 元微信扫码支付:5 元
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
/**
* 拦截后要执行的方法
*/
@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;
}