java--插件--分页

文章主要内容:

  • 分页插件(mybatis)
  • 分页插件(hibernate)
  • 附录(介绍前端是采用easyui的分页)

一.分页插件

进行分页查询时,注意要考虑到前端是用什么分页插件,后端是用什么插件,再把需要数据返回过去。

1. mybatis:
第一种:前端是采用easyui,后端是采用分页插件

  • 使用方法:
    第一步:引入pageHelper的jar包。
    第二步:需要在SqlMapConfig.xml中配置插件。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
		PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
		"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<!-- 配置分页插件 -->
	<plugins>
		<plugin interceptor="com.github.pagehelper.PageHelper">
			<!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库-->        
        	<property name="dialect" value="mysql"/>
		</plugin>
	</plugins>
</configuration>

第三步:在查询的sql语句执行之前,添加一行代码:
PageHelper.startPage(1, 10);
第一个参数是page,要显示第几页。
第二个参数是rows,没页显示的记录数。
第四步:取查询结果的总数量。
创建一个PageInfo类的对象,从对象中取分页信息。

注意:分页插件对逆向工程生成的代码支持不好,不能对有查询条件的查询分页。会抛异常。
使用我修改过的版本就可以了。
例子:
1))Service层
接收分页参数,一个是page一个是rows。调用dao查询商品列表。并分页。返回商品列表。
返回一个EasyUIDateGrid支持的数据格式。需要创建一个Pojo。此pojo应该放到taotao-common工程中。

public class EUDataGridResult {

	private long total;
	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;
	}
	
	
}

2))代码实现:

/**
	 * 商品列表查询
	 * <p>Title: getItemList</p>
	 * <p>Description: </p>
	 * @param page
	 * @param rows
	 * @return
	 * @see com.taotao.service.ItemService#getItemList(long, long)
	 */
	@Override
	public EUDataGridResult getItemList(int page, int rows) {
		//查询商品列表
		TbItemExample example = new TbItemExample();
		//分页处理
		PageHelper.startPage(page, rows);
		List<TbItem> list = itemMapper.selectByExample(example);
		//创建一个返回值对象
		EUDataGridResult result = new EUDataGridResult();
		result.setRows(list);
		//取记录总条数
		PageInfo<TbItem> pageInfo = new PageInfo<>(list);
		result.setTotal(pageInfo.getTotal());
		return result;
	}

3))Controller:
接收页面传递过来的参数page、rows。返回json格式的数据。EUDataGridResult
需要使用到@ResponseBody注解。

@RequestMapping("/item/list")
	@ResponseBody
	public EUDataGridResult getItemList(Integer page, Integer rows) {
		EUDataGridResult result = itemService.getItemList(page, rows);
		return result;
	}

第二种:前端是采用分页插件,后端mybatis是采用分页插件
使用步骤:
后端:第一步:与第一种方法一样。
前端:用的是分页插件
第二步:在brand.html引入分页组件

<!-- 分页组件开始 -->
<script src="../plugins/angularjs/pagination.js"></script>
<link rel="stylesheet" href="../plugins/angularjs/pagination.css">
<!-- 分页组件结束 -->

第三步:构建app模块时引入pagination模块

var app=angular.module('pinyougou',['pagination']);//定义品优购模块

第四步:页面的表格下放置分页组件

<!-- 分页 -->
<tm-pagination conf="paginationConf"></tm-pagination>

第五步:JS代码

//重新加载列表 数据
$scope.reloadList=function(){
	 //切换页码  
$scope.findPage( $scope.paginationConf.currentPage, $scope.paginationConf.itemsPerPage);
}
//分页控件配置 
$scope.paginationConf = {
		 currentPage: 1,
		 totalItems: 10,
		 itemsPerPage: 10,
		 perPageOptions: [10, 20, 30, 40, 50],
		 onChange: function(){
		        	 $scope.reloadList();//重新加载
		 }
}; 
//分页
$scope.findPage=function(page,rows){	
	$http.get('../brand/findPage.do?page='+page+'&rows='+rows).success(
			function(response){
				$scope.list=response.rows;	
				$scope.paginationConf.totalItems=response.total;//更新总记录数
			}			
	);
}

注意:
在页面的body元素上去掉ng-init指令的调用
paginationConf 变量各属性的意义:
currentPage:当前页码
totalItems:总条数
itemsPerPage:
perPageOptions:页码选项
onChange:更改页面时触发事件

2. hibernate:
这里就介绍后端的插件,不介绍前端的,因为和mybatis前端一样。

  • 利用session.create qury()
    原理:跟数组一样(查询所有,再设置分页)
    在这里插入图片描述

附录:

  1. 分页(前端是采用easyui,后端mybatis是采用分页插件)
    了解:
  • 请求的url:/item/list
    在这里插入图片描述

  • 请求的参数:http://localhost:8080/item/list?page=1&rows=30 分页信息。(需要看官方的手册)

  • 返回值。Json数据。数据格式:

  • Easyui中datagrid控件要求的数据格式为:{total:”2”,rows:[{“id”:”1”,”name”,”张三”},{“id”:”2”,”name”,”李四”}]}

Total:总记录数
个人认为:只要点击这个页面,就会自动去请求/iterm/list获取数据来加载到这个页面
注意:datagride中field属性名字要与rows里面一样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值