Mybatis的分页插件PageHelper4.1.6的使用

1、引入jar包

这里以maven为例(如果下载jar,还需要下载pageHelper的依赖com.github.jsqlparser):


    com.github.pagehelper
    pagehelper
    4.1.6

2、添加配置

在mybatis的全局配置文件里标签下添加下面的配置



    
    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
    

3、编写代码

下面是Junit单元测试的简单实现分页查询的代码

package com.taotao.PageHelper;

import java.util.ArrayList;
import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.taotao.mapper.TbItemMapper;
import com.taotao.pojo.TbItem;
import com.taotao.pojo.TbItemExample;
import com.taotao.pojo.TbItemExample.Criteria;

//自动加载spring容器
@RunWith(SpringJUnit4ClassRunner.class)
// 告诉junit spring的配置文件
@ContextConfiguration({ "classpath:spring/applicationContext-dao.xml",
		"classpath:spring/applicationContext-service.xml" })
public class TestPageHelper {
	@Autowired
	private TbItemMapper itemMapper;

	/**
	 * 无条件分页查询测试
	 * 
	 * @Title:函数 TestPageHelper
	 * @Description:Comment for non-overriding methods
	 * @author 张颖辉
	 * @date 2016年9月19日下午9:54:36
	 */
	@Test
	public void TestPageHelper() {
		// 执行查询并分页
		TbItemExample itemExample = new TbItemExample();
		// 分页处理
		PageHelper.startPage(2, 10);// 如果没有这行,后面就会取出所有的商品list
		// 执行查询语句获取商品列表
		List items = itemMapper.selectByExample(itemExample);
		// 打印返回的商品列表
		for (int i = 0; i < items.size(); i++) {
			System.out.println((i + 1) + ":" + items.get(i).getTitle());
		}
		// 获取分页信息
		PageInfo pageInfo = new PageInfo(items);
		long total = pageInfo.getTotal();
		System.out.println("共有商品:" + total);
	}

	@Autowired
	SqlSessionFactoryBean sqlSessionFactory;

	/**
	 * 条件分页查询测试
	 * 
	 * @Title:函数 TestPageHelper2
	 * @Description:Comment for non-overriding methods
	 * @author 张颖辉
	 * @date 2016年9月19日下午9:54:55
	 * @throws Exception
	 */
	@Test
	public void TestPageHelper2() throws Exception {
		/**
		 * 另外一种注入的方式,通过SqlSessionFactoryBean拿到bean(比较落后,已经不常用)
		 */
		// SqlSessionFactory sessionFactory = sqlSessionFactory.getObject();
		// SqlSession sqlSession = sessionFactory.openSession();
		// TbItemMapper itemMapper = sqlSession.getMapper(TbItemMapper.class);

		System.out.println("测试获取数据库会话对象Session:" + sqlSessionFactory.getObject().openSession());

		TbItemExample itemExample = new TbItemExample();
		Criteria criteria = itemExample.createCriteria();
		criteria.andIdLessThan(700000L);
		// criteria.andPriceEqualTo(49800L);

		// 获取第1页,10条内容,默认查询总数count
		PageHelper.startPage(1, 10);

		// 紧跟着的第一个select方法会被分页
		List items = itemMapper.selectByExample(itemExample);

		// 打印返回的商品列表
		for (int i = 0; i < items.size(); i++) {
			System.out.println((i + 1) + ":" + items.get(i).getTitle());
		}
		// 获取分页信息
		PageInfo pageInfo = new PageInfo(items);
		long total = pageInfo.getTotal();
		System.out.println("共有商品:" + total);

	}

}

注意:分页插件对逆向工程生成的代码支持不好(3.4.2版本),不能对有查询条件的查询分页,会抛异常。

      但是后来使用4.1.6可以支持逆向工程。

官方文档:包含更多配置以及注意事


你可能感兴趣的:(SSM,java,mybatis,插件,分页,pageHelper)