1. 程式人生 > >java專案使用pageHelper做分頁

java專案使用pageHelper做分頁

1,maven引入pageHelper依賴

<dependency>  
    <groupId>com.github.pagehelper</groupId>  
    <artifactId>pagehelper</artifactId>  
    <version>4.0.0</version>  
</dependency>  

2,mybatis整合pageHelper配置檔案

mybatis配置檔案

<!-- spring整合MyBatis -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<!-- 引入pageHelper配置檔案 -->
		<property name="configLocation" value="classpath:SqlMapConfig.xml"/>
		<!-- 自動掃描mapping.xml檔案 -->
		<property name="mapperLocations" value="classpath:com/sunadver/jimitd/mapping/*.xml"></property>
	</bean>

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>

	<!-- 全域性setting配置,根據需要新增 -->

	<!-- 配置別名 -->
	<typeAliases>
		<!-- 批量掃描別名,type寫要分頁查詢的物件的路徑 -->
		<typeAlias type="org.xxx.xxx.xxx" alias="Orders" />
	</typeAliases>

	<!-- 配置mapper 由於使用spring和mybatis的整合包進行mapper掃描,這裡不需要配置了。 必須遵循:mapper.xml和mapper.java檔案同名且在一個目錄 -->

	<plugins>
	    <!-- com.github.pagehelper為PageHelper類所在包名 -->
	    <plugin interceptor="com.github.pagehelper.PageHelper">
	        <!-- 4.0.0以後版本可以不設定該引數 -->
	        <property name="dialect" value="mysql"/>
	        <!-- 該引數預設為false -->
	        <!-- 設定為true時,會將RowBounds第一個引數offset當成pageNum頁碼使用 -->
	        <!-- 和startPage中的pageNum效果一樣-->
	        <property name="offsetAsPageNum" value="true"/>
	        <!-- 該引數預設為false -->
	        <!-- 設定為true時,使用RowBounds分頁會進行count查詢 -->
	        <property name="rowBoundsWithCount" value="true"/>
	        <!-- 設定為true時,如果pageSize=0或者RowBounds.limit = 0就會查詢出全部的結果 -->
	        <!-- (相當於沒有執行分頁查詢,但是返回結果仍然是Page型別)-->
	        <property name="pageSizeZero" value="true"/>
	        <!-- 3.3.0版本可用 - 分頁引數合理化,預設false禁用 -->
	        <!-- 啟用合理化時,如果pageNum<1會查詢第一頁,如果pageNum>pages會查詢最後一頁 -->
	        <!-- 禁用合理化時,如果pageNum<1或pageNum>pages會返回空資料 -->
	        <property name="reasonable" value="true"/>
	        <!-- 3.5.0版本可用 - 為了支援startPage(Object params)方法 -->
	        <!-- 增加了一個`params`引數來配置引數對映,用於從Map或ServletRequest中取值 -->
	        <!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,orderBy,不配置對映的用預設值 -->
	        <!-- 不理解該含義的前提下,不要隨便複製該配置 -->
	        <property name="params" value="pageNum=start;pageSize=limit;"/>
	        <!-- 支援通過Mapper介面引數來傳遞分頁引數 -->
	        <property name="supportMethodsArguments" value="true"/>
	        <!-- always總是返回PageInfo型別,check檢查返回型別是否為PageInfo,none返回Page -->
	        <property name="returnPageInfo" value="check"/>
	    </plugin>
	</plugins>
</configuration>

3,頁面設定pageNum與pageSize引數
 <script>
		  	$(function() {
				/*
				 * 查詢所有人
				 */
				$("#search_button").click(function() {
					var pageNum = "1";
					var pageSize = "10";
					var ordId = $("#ordId").val();
			    	var tel = $("#tel").val();
			    	var uname = $("#uname").val();
			    	var delivery_id = $("#way").val();
			    	queryAllPerson(pageNum, pageSize);
				});
				
			});
      
      
		      function queryAllPerson(pageNum, pageSize){
		    	var ordId = $("#ordId").val();
			    var tel = $("#tel").val();
			    var uname = $("#uname").val();
			    var delivery_id = $("#way").val();
		  		$("#pagehelper_id").html("資料正在玩命載入中......");
		  		$("#pagehelper_id").load("${pageContext.request.contextPath}/order/queryOrderList?pageNum="+pageNum+
		  				"&pageSize="+pageSize+"&uname="+uname+"&tel="+tel+"&ordId="+ordId+"&delivery_id="+delivery_id);
		  	}
      </script>

4,後臺控制器程式碼
@RequestMapping("/queryOrderList")
	public String queryOrderList(HttpServletRequest request, Model model, HttpSession session) {
		try {
			
			String pageNum = request.getParameter("pageNum"); // 頁數
			String pageSize = request.getParameter("pageSize"); // 每頁顯示條數

			/****************** 多條件 *****************************/
			String oid = request.getParameter("ordId");
			String tel = request.getParameter("tel");
			String uname = request.getParameter("uname");
			String parameter = request.getParameter("delivery_id");

			Map<String, Object> map = new HashMap<String, Object>();
			if ((parameter.equals("1")) || (parameter.equals("2"))) {
				int delivery_id = Integer.parseInt(parameter);
				map.put("deliveryId", delivery_id);
			}
			map.put("ordId", oid);
			map.put("name", uname);
			map.put("tel", tel);

			/******************** 分頁查詢 ***********************/
			int num = 1;
			int size = 10;
			if (pageNum != null && !"".equals(pageNum)) {
				num = Integer.parseInt(pageNum);
			}
			if (pageSize != null && !"".equals(pageSize)) {
				size = Integer.parseInt(pageSize);
			}

			// pageHelper分頁查詢物件
			PageHelper.startPage(num, size);
			List<Orders> orderList = orderService.selectOrderListandUserItems(map);
			PageInfo<Orders> pagehelper = new PageInfo<Orders>(orderList);
			model.addAttribute("pagehelper", pagehelper);
			return "olist";

		} catch (Exception e) {
			return "login";
		}

	}

5,order.xml對映檔案不在貼上根據自己實際情況來做條件查詢就可以了,到此基本完成