多语言展示
当前在线:358今日阅读:23今日分享:25

mybatis中分页插件的使用

使用拦截器的分页插件
方法/步骤
1

@Intercepts({@Signature(type=StatementHandler.class,method="prepare",args={Connection.class})})public class PagePlugin implements Interceptor { private static String dialect = ""; //数据库方言 private static String pageSqlId = ""; //mapper.xml中需要拦截的ID(正则匹配) public Object intercept(Invocation ivk) throws Throwable { // TODO Auto-generated method stub if(ivk.getTarget() instanceof RoutingStatementHandler){ RoutingStatementHandler statementHandler = (RoutingStatementHandler)ivk.getTarget(); BaseStatementHandler delegate = (BaseStatementHandler) ReflectHelper.getValueByFieldName(statementHandler, "delegate"); MappedStatement mappedStatement = (MappedStatement) ReflectHelper.getValueByFieldName(delegate, "mappedStatement");

2

if(mappedStatement.getId().matches(pageSqlId)){ //拦截需要分页的SQLBoundSql boundSql = delegate.getBoundSql();Object parameterObject = boundSql.getParameterObject();//分页SQL