@Override
    public PageData<T> selectWithPageSizeByRowId(int pageSize, int pageIndex, String condition, String orderByColumnName, SortTypeEnum sortType, Object[] parameterValues, String... columnNames) {
        if (StringExtension.isNullOrEmpty(orderByColumnName)) {
            throw new NullPointerException("orderByColumnName:排序字段名称，不要求带ORDER BY关键字,只要指定排序字段名称即可");
        }

        if (!this.containWhere(condition)) {
            throw new WhereConditionException("condition：指定的条件,不要求带SQL语句Where关键字的条件");
        }

        //设置默认分页参数
        if (pageSize < 1) {
            pageSize = 10;
        }
        if (pageIndex < 0) {
            pageIndex = 0;
        }

        //设置分页起点与终点
        int startRowId = (pageIndex - 1) * pageSize;
        //获取筛选列
        String columns = this.getColumns(columnNames);

        //分页获取数据库记录集的SQL语句
        StringBuilder sqlFormat = new StringBuilder();
        sqlFormat.append("SELECT %1$s ");
        sqlFormat.append("FROM %2$s ");
        sqlFormat.append("%3$s ORDER BY %4$s %5$s LIMIT %6$s,%7$s ");

        String sqlCmd = String.format(sqlFormat.toString(), columns, this.tableName, condition, orderByColumnName, sortType.toString(), startRowId, pageSize);
        return this.getPageData(condition, parameterValues, sqlCmd, columnNames);
    }