java--插件--分页

文章主要内容:

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

一.分页插件

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

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

  • 使用方法:
    第一步:引入pageHelper的jar包。
    第二步:需要在SqlMapConfig.xml中配置插件。



	
	
		
			        
        	
		
	


第三步:在查询的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))代码实现:

/**
	 * 商品列表查询
	 * 

Title: getItemList

*

Description:

* @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 list = itemMapper.selectByExample(example); //创建一个返回值对象 EUDataGridResult result = new EUDataGridResult(); result.setRows(list); //取记录总条数 PageInfo 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引入分页组件






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

var app=angular.module('pinyougou',['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()
    原理:跟数组一样(查询所有,再设置分页)
    java--插件--分页_第1张图片

附录:

  1. 分页(前端是采用easyui,后端mybatis是采用分页插件)
    了解:
  • 请求的url:/item/list
    java--插件--分页_第2张图片

  • 请求的参数: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里面一样

你可能感兴趣的:(java--插件,java,代码,分页)