mybatis中分页插件的使用

 时间:2024-11-02 06:12:53

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");

mybatis中分页插件的使用

2、if(mappedStatement.getId().matches(pageSqlId)){ //拦截需要分页的SQLBoundSql boundSql = delegate.getBoundSql();Object parameterObject = boundSql.getParameterObject();//分页SQL<select>中parameterType属性对应的实体参数,即Mapper接口中执行分页方法的参数,该参数不得为空if(parameterObject==null){throw new NullPointerException("parameterObject尚未实例化!");}

mybatis中分页插件的使用

3、else{Connection connection = (Connection) ivk.getArgs()[0];String sql = boundSql.getSql();//String countSql = "select count(0) from (" + sql+ ") as tmp_count"; //记录统计String fhsql = sql;String countSql = "select count(0) from (" + fhsql+ ") tmp_count"; //记录统计 == oracle 加 as 报错(SQL command not properly ended)PreparedStatement countStmt = connection.prepareStatement(countSql);

mybatis中分页插件的使用
  • 分页插件怎么使用
  • mybatis分页插件-pagehelper的使用
  • mybatis如何分页查询
  • Mybatis分页插件嵌入ssm框架
  • mybatis使用过程中的问题
  • 热门搜索
    银耳莲子红枣汤的功效与作用 胖大海的功效与作用及禁忌 跳蛋是干什么用的 引号的作用及举例 什么是平开门 维a的功效与作用 运动磁场官网 什么牌子的耳机好 同房出血要做什么检查 什么样的分手不能复合