资源简介

mybatis定时任务列表查询分页切割,列表查询存在风险,在框架的层面使用拦截器完成列表的分页切割

资源截图

代码片段和文件信息

package com.bqjr.core.util.prepage;

import java.util.Properties;

import javax.xml.bind.PropertyException;

import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.executor.Executor;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.plugin.Intercepts;
import org.apache.ibatis.plugin.Invocation;
import org.apache.ibatis.plugin.Plugin;
import org.apache.ibatis.plugin.Signature;
import org.apache.ibatis.session.ResultHandler;
import org.apache.ibatis.session.RowBounds;

import com.bqjr.core.util.prepage.adapt.PrePageList;
import com.bqjr.core.util.prepage.compments.DataPageReader;
import com.bqjr.core.util.prepage.compments.QueryPage;
import com.bqjr.core.util.prepage.compments.QueryPageMybatisImpl;

@Intercepts({@Signature(type=Executor.classmethod=“query“
args=
{MappedStatement.classobject.classRowBounds.classResultHandler.class}
)})
public class PrePagePlugin implements Interceptor  {

private static String dialect = ““; //数据库方言
private static String pageSqlId = ““; //mapper.xml中需要拦截的ID(正则匹配)
private static Long pageSize;

@SuppressWarnings({ “rawtypes“ “unchecked“ })
@Override
public object intercept(Invocation ivk) throws Throwable { //java.sql.Statement
System.out.println(“调用到了插件“);
MappedStatement mappedStatement = (MappedStatement) ivk.getArgs()[0];

if(mappedStatement.getId().matches(pageSqlId)){
try {
QueryPage qp = new QueryPageMybatisImpl<>(ivk dialect);
DataPageReader pd = new DataPageReader<>(qppageSize);
PrePageList plist = new PrePageList<>(pd);
return plist;
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(“大数据量分页初始化异常“);
}
}
return ivk.proceed();
}


@Override
public object plugin(object arg0) {
return Plugin.wrap(arg0 this);
}

@Override
public void setProperties(Properties p) {
dialect = p.getProperty(“dialect“);
if (StringUtils.isEmpty(dialect)) {
try {
throw new PropertyException(“dialect property is not found!“);
} catch (PropertyException e) {
e.printStackTrace();
}
}
pageSqlId = p.getProperty(“pageSqlId“);
if (StringUtils.isEmpty(pageSqlId)) {
try {
throw new PropertyException(“pageSqlId property is not found!“);
} catch (PropertyException e) {
e.printStackTrace();
}
}
pageSize = new Long(p.getProperty(“pageSize“ “5000“));
}

}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件          73  2017-11-07 10:39  mybatis-querypage\read-me.txt
     目录           0  2017-11-06 18:13  mybatis-querypage\
     文件        1433  2017-11-06 18:20  mybatis-querypage\.classpath
     文件         569  2017-11-06 18:13  mybatis-querypage\.project
     目录           0  2017-11-06 18:20  mybatis-querypage\.settings\
     文件          93  2017-11-06 18:20  mybatis-querypage\.settings\org.eclipse.core.resources.prefs
     文件         736  2017-11-06 18:16  mybatis-querypage\.settings\org.eclipse.jdt.core.prefs
     文件          90  2017-11-06 18:13  mybatis-querypage\.settings\org.eclipse.m2e.core.prefs
     文件        1109  2017-11-06 18:17  mybatis-querypage\pom.xml
     目录           0  2017-11-06 18:13  mybatis-querypage\src\
     目录           0  2017-11-06 18:13  mybatis-querypage\src\main\
     目录           0  2017-11-06 18:13  mybatis-querypage\src\main\java\
     目录           0  2017-11-06 18:13  mybatis-querypage\src\main\java\com\
     目录           0  2017-11-06 18:13  mybatis-querypage\src\main\java\com\bqjr\
     目录           0  2017-11-06 18:13  mybatis-querypage\src\main\java\com\bqjr\core\
     目录           0  2017-11-06 18:13  mybatis-querypage\src\main\java\com\bqjr\core\util\
     目录           0  2017-11-06 18:13  mybatis-querypage\src\main\java\com\bqjr\core\util\prepage\
     文件        2560  2017-11-06 17:20  mybatis-querypage\src\main\java\com\bqjr\core\util\prepage\PrePagePlugin.java
     目录           0  2017-11-06 18:13  mybatis-querypage\src\main\java\com\bqjr\core\util\prepage\adapt\
     文件        4267  2017-11-06 18:20  mybatis-querypage\src\main\java\com\bqjr\core\util\prepage\adapt\PrePageList.java
     目录           0  2017-11-06 18:13  mybatis-querypage\src\main\java\com\bqjr\core\util\prepage\compments\
     文件        2017  2017-11-06 17:42  mybatis-querypage\src\main\java\com\bqjr\core\util\prepage\compments\DataPageReader.java
     文件         226  2017-11-06 09:56  mybatis-querypage\src\main\java\com\bqjr\core\util\prepage\compments\QueryPage.java
     文件        5131  2017-11-06 17:42  mybatis-querypage\src\main\java\com\bqjr\core\util\prepage\compments\QueryPageMybatisImpl.java
     目录           0  2017-11-06 18:13  mybatis-querypage\src\main\java\com\bqjr\core\util\prepage\helper\
     文件        1994  2017-11-06 09:53  mybatis-querypage\src\main\java\com\bqjr\core\util\prepage\helper\ReflectHelper.java
     文件         407  2017-11-06 17:55  mybatis-querypage\src\main\java\com\bqjr\core\util\prepage\mybatis-config-demo.xml
     目录           0  2017-11-06 18:20  mybatis-querypage\src\main\resources\
     目录           0  2017-11-06 18:13  mybatis-querypage\src\test\
     目录           0  2017-11-06 18:20  mybatis-querypage\src\test\java\
     目录           0  2017-11-06 18:20  mybatis-querypage\src\test\resources\
............此处省略27个文件信息

评论

共有 条评论