Mybatis分页插件 - PageHelper

如果你也在用Mybatis,可以尝试该分页插件,这个是一个很方便使用的分页插件。
该插件目前支持Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库分页

使用方法

第一步:
把PageHelper依赖的jar包添加到工程中。
官方提供的代码对逆向工程的支持不友好,可以使用自己改的 pagehelper-fix。 pagehelper下载地址

在pom文件引入pagehelper的依赖
3.4.2-fix引入的是分页插件的坐标, 3.4.2-fix在中央仓库是下载不到的
在这里插入图片描述

这个分页插件是一个pom工程, 导入这个工程到工作空间后, 安装到本地仓库— Run As -> Maven install , 安装后这个工程就生成jar包了
在这里插入图片描述

在这个分页插件的.pom文件里可以看到分页插件的坐标, 在其他地方引入坐标就可以使用了
在这里插入图片描述

第二步:在Mybatis配置文件(SqlMapConfig.xml)中配置拦截器插件

<plugins>
    <!-- com.github.pagehelper为PageHelper类所在包名 -->
    <plugin interceptor="com.github.pagehelper.PageHelper">
        <!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库-->        
        <property name="dialect" value="mysql"/>
    </plugin>
</plugins>


分页测试

@Test
	public void testPageHelper() throws Exception{
		//初始化spring容器
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-dao.xml");
		//从容器中获得mapper代理对象
		TbItemMapper itemMapper = applicationContext.getBean(TbItemMapper.class);
		//执行sql语句之前设置分页信息使用PageHelper的startPage方法
		PageHelper.startPage(1, 10);
		//执行查询
		TbItemExample example = new TbItemExample();
		List<TbItem> list = itemMapper.selectByExample(example);
		//取分页信息,PageInfo.  1.总记录数  2.总页数  3.当前页码  ..
		PageInfo<TbItem> pageInfo = new PageInfo<TbItem>(list);
		System.out.println(pageInfo.getTotal());
		System.out.println(pageInfo.getPages());
		System.out.println(list.size());
	}

934条信息, 94页, 每页10条
在这里插入图片描述




PageHelper在项目中的使用

请求的url:
/item/list
请求的参数:
page=1&rows=30
响应的json数据格式:
       Easyui中datagrid控件要求的数据格式为:
       {total:”2”,rows:[{“id”:”1”,”name”:”张三”},{“id”:”2”,”name”:”李四”}]}

查询商品信息, 需要返回的是json数据(一般都是通过java对象转换来的)
可以写一个pojo通过 @Respondbody直接响应pojo会自动转成json


由于多个系统以及其他的工程可能也会用到这个pojo, 因此创建到common里面
在*-common里创建EasyUIDataGridResult
在这里插入图片描述

public class EasyUIDataGridResult implements Serializable{
	
	private long total;
	//不添加泛型,因为这个List可能是商品列表,也可能是用户列表..
	private List rows;
	
	public long getTotal() {
		return total;
	}
	public void setTotal(long total) {
		this.total = total;
	}
	public List getRows() {
		return rows;
	}
	public void setRows(List rows) {
		this.rows = rows;
	}	
}

分页需要两个参数, page和rows
业务逻辑:查询所有商品列表,进行分页处理
返回值:EasyUIDataGridResult


dao层使用逆向工程生成的代码

定义接口

public interface ItemService {
	EasyUIDataGridResult getItemList(int page, int rows);
}

接口的实现类

@Service
@Repository("itemService")
public class ItemServiceImpl implements ItemService {
	// 注入mapper层接口
	@Autowired
	private TbItemMapper itemMapper;
	
	@Override
	public EasyUIDataGridResult getItemList(int page, int rows) {
		// 设置分页信息
		PageHelper.startPage(page, rows);
		// 执行查询
		TbItemExample example = new TbItemExample();
		List<TbItem> list = itemMapper.selectByExample(example);
		// 创建一个返回值对象
		EasyUIDataGridResult result = new EasyUIDataGridResult();
		result.setRows(list);
		// 取分页结果
		PageInfo<TbItem> pageInfo = new PageInfo<TbItem>(list);
		// 取总记录数
		long total = pageInfo.getTotal();
		result.setTotal(total);
			return result;
	}
}

表现层

@Controller
public class ItemController {
	//注入service层接口
	@Autowired
	private ItemService itemService;
		
	@RequestMapping("/item/list")
	@ResponseBody
	public EasyUIDataGridResult getItenList(Integer page, Integer rows) {
		//调用商品服务查询列表
		EasyUIDataGridResult result = itemService.getItemList(page, rows);
		return result;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值