Search in sources :

Example 1 with Page

use of com.github.pagehelper.Page in project benchmark by seelunzi.

the class PageFactory method getPage.

/*    */
/*    */
public static Page getPage(Map<String, String> map) /*    */
{
    /* 12 */
    Page page = null;
    /* 13 */
    Integer offset = Integer.valueOf((String) map.get("offset"));
    /* 14 */
    Integer limit = Integer.valueOf((String) map.get("limit"));
    /* 16 */
    if (limit.intValue() == -1) {
        /* 17 */
        page = PageHelper.startPage(offset.intValue() / limit.intValue() + 1, 0);
    /*    */
    } else {
        /* 19 */
        page = PageHelper.startPage(offset.intValue() / limit.intValue() + 1, limit.intValue());
    /*    */
    }
    /* 21 */
    return page;
/*    */
}
Also used : Page(com.github.pagehelper.Page)

Example 2 with Page

use of com.github.pagehelper.Page in project Mybatis-PageHelper by pagehelper.

the class PageMethod method orderBy.

/**
 * 排序
 *
 * @param orderBy
 */
public static void orderBy(String orderBy) {
    Page<?> page = getLocalPage();
    if (page != null) {
        page.setOrderBy(orderBy);
    } else {
        page = new Page();
        page.setOrderBy(orderBy);
        page.setOrderByOnly(true);
        setLocalPage(page);
    }
}
Also used : Page(com.github.pagehelper.Page)

Example 3 with Page

use of com.github.pagehelper.Page in project Mybatis-PageHelper by pagehelper.

the class AbstractHelperDialect method afterPage.

@Override
public Object afterPage(List pageList, Object parameterObject, RowBounds rowBounds) {
    Page page = getLocalPage();
    if (page == null) {
        return pageList;
    }
    page.addAll(pageList);
    if (!page.isCount()) {
        page.setTotal(-1);
    } else if ((page.getPageSizeZero() != null && page.getPageSizeZero()) && page.getPageSize() == 0) {
        page.setTotal(pageList.size());
    } else if (page.isOrderByOnly()) {
        page.setTotal(pageList.size());
    }
    return page;
}
Also used : Page(com.github.pagehelper.Page)

Example 4 with Page

use of com.github.pagehelper.Page in project Mybatis-PageHelper by pagehelper.

the class PageParams method getPage.

/**
 * 获取分页参数
 *
 * @param parameterObject
 * @param rowBounds
 * @return
 */
public Page getPage(Object parameterObject, RowBounds rowBounds) {
    Page page = PageHelper.getLocalPage();
    if (page == null) {
        if (rowBounds != RowBounds.DEFAULT) {
            if (offsetAsPageNum) {
                page = new Page(rowBounds.getOffset(), rowBounds.getLimit(), rowBoundsWithCount);
            } else {
                page = new Page(new int[] { rowBounds.getOffset(), rowBounds.getLimit() }, rowBoundsWithCount);
                // offsetAsPageNum=false的时候,由于PageNum问题,不能使用reasonable,这里会强制为false
                page.setReasonable(false);
            }
            if (rowBounds instanceof PageRowBounds) {
                PageRowBounds pageRowBounds = (PageRowBounds) rowBounds;
                page.setCount(pageRowBounds.getCount() == null || pageRowBounds.getCount());
            }
        } else if (parameterObject instanceof IPage || supportMethodsArguments) {
            try {
                page = PageObjectUtil.getPageFromObject(parameterObject, false);
            } catch (Exception e) {
                return null;
            }
        }
        if (page == null) {
            return null;
        }
        PageHelper.setLocalPage(page);
    }
    // 分页合理化
    if (page.getReasonable() == null) {
        page.setReasonable(reasonable);
    }
    // 当设置为true的时候,如果pagesize设置为0(或RowBounds的limit=0),就不执行分页,返回全部结果
    if (page.getPageSizeZero() == null) {
        page.setPageSizeZero(pageSizeZero);
    }
    return page;
}
Also used : IPage(com.github.pagehelper.IPage) PageRowBounds(com.github.pagehelper.PageRowBounds) IPage(com.github.pagehelper.IPage) Page(com.github.pagehelper.Page)

Example 5 with Page

use of com.github.pagehelper.Page in project Mybatis-PageHelper by pagehelper.

the class AbstractHelperDialect method processParameterObject.

@Override
public Object processParameterObject(MappedStatement ms, Object parameterObject, BoundSql boundSql, CacheKey pageKey) {
    // 处理参数
    Page page = getLocalPage();
    // 如果只是 order by 就不必处理参数
    if (page.isOrderByOnly()) {
        return parameterObject;
    }
    Map<String, Object> paramMap = null;
    if (parameterObject == null) {
        paramMap = new HashMap<String, Object>();
    } else if (parameterObject instanceof Map) {
        // 解决不可变Map的情况
        paramMap = new HashMap<String, Object>();
        paramMap.putAll((Map) parameterObject);
    } else {
        paramMap = new HashMap<String, Object>();
        // sqlSource为ProviderSqlSource时,处理只有1个参数的情况
        if (ms.getSqlSource() instanceof ProviderSqlSource) {
            String[] providerMethodArgumentNames = ExecutorUtil.getProviderMethodArgumentNames((ProviderSqlSource) ms.getSqlSource());
            if (providerMethodArgumentNames != null && providerMethodArgumentNames.length == 1) {
                paramMap.put(providerMethodArgumentNames[0], parameterObject);
                paramMap.put("param1", parameterObject);
            }
        }
        // 动态sql时的判断条件不会出现在ParameterMapping中,但是必须有,所以这里需要收集所有的getter属性
        // TypeHandlerRegistry可以直接处理的会作为一个直接使用的对象进行处理
        boolean hasTypeHandler = ms.getConfiguration().getTypeHandlerRegistry().hasTypeHandler(parameterObject.getClass());
        MetaObject metaObject = MetaObjectUtil.forObject(parameterObject);
        // 需要针对注解形式的MyProviderSqlSource保存原值
        if (!hasTypeHandler) {
            for (String name : metaObject.getGetterNames()) {
                paramMap.put(name, metaObject.getValue(name));
            }
        }
        // 下面这段方法,主要解决一个常见类型的参数时的问题
        if (boundSql.getParameterMappings() != null && boundSql.getParameterMappings().size() > 0) {
            for (ParameterMapping parameterMapping : boundSql.getParameterMappings()) {
                String name = parameterMapping.getProperty();
                if (!name.equals(PAGEPARAMETER_FIRST) && !name.equals(PAGEPARAMETER_SECOND) && paramMap.get(name) == null) {
                    if (hasTypeHandler || parameterMapping.getJavaType().equals(parameterObject.getClass())) {
                        paramMap.put(name, parameterObject);
                        break;
                    }
                }
            }
        }
    }
    return processPageParameter(ms, paramMap, page, boundSql, pageKey);
}
Also used : ParameterMapping(org.apache.ibatis.mapping.ParameterMapping) MetaObject(org.apache.ibatis.reflection.MetaObject) Page(com.github.pagehelper.Page) MetaObject(org.apache.ibatis.reflection.MetaObject) ProviderSqlSource(org.apache.ibatis.builder.annotation.ProviderSqlSource)

Aggregations

Page (com.github.pagehelper.Page)11 IPage (com.github.pagehelper.IPage)2 PageRowBounds (com.github.pagehelper.PageRowBounds)2 MetaObject (org.apache.ibatis.reflection.MetaObject)2 PageException (com.github.pagehelper.PageException)1 ProviderSqlSource (org.apache.ibatis.builder.annotation.ProviderSqlSource)1 ParameterMapping (org.apache.ibatis.mapping.ParameterMapping)1 OpenPage (org.tech.commons.OpenPage)1 People (org.tech.domain.People)1