Search in sources :

Example 1 with PageRowBounds

use of com.github.pagehelper.PageRowBounds 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 2 with PageRowBounds

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

the class PageRowBoundsTest method testMapperWithPageRowBounds.

/**
 * 使用Mapper接口调用时,对接口增加RowBounds参数,不需要修改对应的xml配置(或注解配置)
 * <p/>
 * RowBounds方式不进行count查询,可以通过修改Page代码实现
 * <p/>
 * 这种情况下如果同时使用startPage方法,以startPage为准
 */
@Test
public void testMapperWithPageRowBounds() {
    SqlSession sqlSession = RowBoundsHelper.getSqlSession();
    UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    try {
        // 获取第1页,10条内容,默认查询总数count
        PageRowBounds pageRowBounds = new PageRowBounds(0, 10);
        List<User> list = userMapper.selectAll(pageRowBounds);
        // 新增PageInfo对象,对返回结果进行封装
        assertEquals(10, list.size());
        assertEquals(183L, pageRowBounds.getTotal().longValue());
        // 判断查询结果的位置是否正确
        assertEquals(1, list.get(0).getId());
        assertEquals(10, list.get(list.size() - 1).getId());
        // 获取第10页,10条内容,显式查询总数count
        pageRowBounds = new PageRowBounds(90, 10);
        list = userMapper.selectAll(pageRowBounds);
        assertEquals(10, list.size());
        assertEquals(183L, pageRowBounds.getTotal().longValue());
        // 判断查询结果的位置是否正确
        assertEquals(91, list.get(0).getId());
        assertEquals(100, list.get(list.size() - 1).getId());
        // 获取第3页,20条内容,默认查询总数count
        pageRowBounds = new PageRowBounds(100, 20);
        list = userMapper.selectAll(pageRowBounds);
        assertEquals(20, list.size());
        assertEquals(183L, pageRowBounds.getTotal().longValue());
        // 判断查询结果的位置是否正确
        assertEquals(101, list.get(0).getId());
        assertEquals(120, list.get(list.size() - 1).getId());
    } finally {
        sqlSession.close();
    }
}
Also used : UserMapper(com.github.pagehelper.mapper.UserMapper) User(com.github.pagehelper.model.User) SqlSession(org.apache.ibatis.session.SqlSession) PageRowBounds(com.github.pagehelper.PageRowBounds) Test(org.junit.Test)

Example 3 with PageRowBounds

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

the class PageRowBoundsTest method testNamespaceWithPageRowBounds.

/**
 * 使用命名空间方式的RowBounds进行分页,使用RowBounds时不进行count查询
 * 通过修改代码可以进行count查询,没法通过其他方法改变参数
 * 因为如果通过调用一个别的方法来标记count查询,还不如直接startPage
 * <p/>
 * 同时使用startPage时,以startPage为准,会根据startPage参数来查询
 */
@Test
public void testNamespaceWithPageRowBounds() {
    SqlSession sqlSession = RowBoundsHelper.getSqlSession();
    try {
        // 获取从0开始,10条内容
        PageRowBounds pageRowBounds = new PageRowBounds(0, 10);
        List<User> list = sqlSession.selectList("selectAll", null, pageRowBounds);
        assertEquals(10, list.size());
        assertEquals(183L, pageRowBounds.getTotal().longValue());
        // 判断查询结果的位置是否正确
        assertEquals(1, list.get(0).getId());
        assertEquals(10, list.get(list.size() - 1).getId());
        // 获取从10开始,10条内容
        pageRowBounds = new PageRowBounds(90, 10);
        list = sqlSession.selectList("selectAll", null, pageRowBounds);
        assertEquals(10, list.size());
        assertEquals(183L, pageRowBounds.getTotal().longValue());
        // 判断查询结果的位置是否正确
        assertEquals(91, list.get(0).getId());
        assertEquals(100, list.get(list.size() - 1).getId());
        // 获取从20开始,20条内容
        pageRowBounds = new PageRowBounds(100, 20);
        list = sqlSession.selectList("selectAll", null, pageRowBounds);
        assertEquals(20, list.size());
        assertEquals(183L, pageRowBounds.getTotal().longValue());
        // 判断查询结果的位置是否正确
        assertEquals(101, list.get(0).getId());
        assertEquals(120, list.get(list.size() - 1).getId());
    } finally {
        sqlSession.close();
    }
}
Also used : User(com.github.pagehelper.model.User) SqlSession(org.apache.ibatis.session.SqlSession) PageRowBounds(com.github.pagehelper.PageRowBounds) Test(org.junit.Test)

Example 4 with PageRowBounds

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

the class PageRowBoundsTest method testWithRowboundsAndCountTrue.

/**
 * 使用Mapper接口调用时,使用PageHelper.startPage效果更好,不需要添加Mapper接口参数
 */
@Test
public void testWithRowboundsAndCountTrue() {
    SqlSession sqlSession = RowBoundsHelper.getSqlSession();
    UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    try {
        // limit=0,这时候相当于用分页插件求count,但是前提必须是配置rounbounds方式求count,否则都是-1
        // 这里由于没有配置,应该都是-1
        PageRowBounds pageRowBounds = new PageRowBounds(0, -1);
        List<User> list = userMapper.selectAll(pageRowBounds);
        assertEquals(183, list.size());
        // pageSize<0的时候同上
        list = userMapper.selectAll(new PageRowBounds(0, -100));
        assertEquals(183, list.size());
    } finally {
        sqlSession.close();
    }
}
Also used : UserMapper(com.github.pagehelper.mapper.UserMapper) User(com.github.pagehelper.model.User) SqlSession(org.apache.ibatis.session.SqlSession) PageRowBounds(com.github.pagehelper.PageRowBounds) Test(org.junit.Test)

Example 5 with PageRowBounds

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

the class PageRowBoundsTest method testNamespaceWithRowBounds2.

@Test
public void testNamespaceWithRowBounds2() {
    SqlSession sqlSession = RowBoundsHelper.getSqlSession();
    try {
        // 获取从0开始,10条内容
        PageRowBounds pageRowBounds = new PageRowBounds(0, 10);
        List<User> list = sqlSession.selectList("selectIf", null, pageRowBounds);
        assertEquals(10, list.size());
        assertEquals(183L, pageRowBounds.getTotal().longValue());
        // 判断查询结果的位置是否正确
        assertEquals(1, list.get(0).getId());
        assertEquals(10, list.get(list.size() - 1).getId());
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("id", 10);
        // 获取从10开始,10条内容
        pageRowBounds = new PageRowBounds(90, 10);
        list = sqlSession.selectList("selectIf", map, pageRowBounds);
        assertEquals(10, list.size());
        assertEquals(173L, pageRowBounds.getTotal().longValue());
        // 判断查询结果的位置是否正确
        assertEquals(101, list.get(0).getId());
        assertEquals(110, list.get(list.size() - 1).getId());
    } finally {
        sqlSession.close();
    }
}
Also used : User(com.github.pagehelper.model.User) SqlSession(org.apache.ibatis.session.SqlSession) PageRowBounds(com.github.pagehelper.PageRowBounds) HashMap(java.util.HashMap) Test(org.junit.Test)

Aggregations

PageRowBounds (com.github.pagehelper.PageRowBounds)6 User (com.github.pagehelper.model.User)4 SqlSession (org.apache.ibatis.session.SqlSession)4 Test (org.junit.Test)4 Page (com.github.pagehelper.Page)2 UserMapper (com.github.pagehelper.mapper.UserMapper)2 IPage (com.github.pagehelper.IPage)1 HashMap (java.util.HashMap)1