效果頁面的展示:
點擊查詢商品,會從數據庫中查詢出數據,並且實現分頁的功能。
一.分頁功能PageHelper的配置以及測試。
1.下載PageHelper的jar包,然后放在本地倉庫中,接着加到jingxi-backend-mapper項目中。
可以從http://download.csdn.net/detail/u012453843/9786164這個地址進行下載。下載完之后,我們解壓它並把它放在我們本地maven倉庫的相應位置下,如下圖所示。這樣便可以使用修改后的pagehelper插件了。
2.需要在 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 類的對象,從對象中取分頁信息。
測試pageHelper是否可以進行分頁操作:
package com.jingxi.pagehelper; import java.util.List; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.jingxi.mapper.TbItemMapper; import com.jingxi.pojo.TbItem; import com.jingxi.pojo.TbItemExample; import com.jingxi.pojo.TbItemExample.Criteria; public class TestPageHelper { @Test public void testPageHelper() throws Exception{ //1.在Mybatis配置文件中配置分頁插件,這一步我剛才已經做過了。 //2.在執行查詢之前配置分頁條件,使用pagehelper靜態方法 PageHelper.startPage(1, 10); //3.執行查詢 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-dao.xml"); TbItemMapper tbItemMapper = applicationContext.getBean(TbItemMapper.class); TbItemExample tbItemExample = new TbItemExample(); //如果要使用條件查詢,則先創建Criteria,然后使用它來拼接查詢條件,這里我們不按條件查詢,我們查詢全部。 Criteria criteria = tbItemExample.createCriteria(); criteria.andIdEqualTo(1L); //pagehelper的Page類是繼承ArrayList的,Page里面有分頁結果 List<TbItem> list = tbItemMapper.selectByExample(tbItemExample); //4.取分頁信息,使用PageInfo對象獲取,我們使用PageInfo的目的便是把List強轉成Page對象,從而得到分頁結果 PageInfo<TbItem> pageInfo = new PageInfo<>(list); System.out.println("總記錄數:"+pageInfo.getTotal()); System.out.println("總頁數:"+pageInfo.getPages()); System.out.println("返回的記錄數:"+pageInfo.getSize()); } } |
二.有關easyUI的傳值屬性以及各種連接的跳轉
首先我們在index.jsp頁面中可以看出,當我們點擊的查詢商品的時候,應該跳“item-list”這個jsp頁面。
所以在這里應該寫一個controller進行頁面的跳轉
下面我們再具體看下item-list.jsp這個頁面的代碼,首先看下<table>頭信息,如下所示,可以看到,table的class設置成了"easyui-datagrid",設置了它之后便默認把表格渲染成我們在最上方那張圖所看到的表格樣式。雖然不太好看,但是對於后台來說能用即可,美觀並不是多么重要。data-options中singleSelect:false表示可以多選,如果想要實現只能選擇一條記錄的效果,可以把singleSelect的值設置為true。
collapsible:true所代表的意思是是否顯示折疊按鈕。
pagination:true代表的意思是要顯示分頁,如果不想分頁就把該值設置為false。
url:'/item/list'的意思是我們初始化商品列表請求的url。
method:'get'表示請求方式是GET。
pageSize:30表示每頁顯示30條記錄,我們從有分頁信息的圖中可以看到"30"的信息,就是這里設置的值。
所以:
當我們在index.jsp頁面點擊查詢商品的時候,應該讓請求轉向item-list.jsp頁面並且從數據庫查詢出數據,轉換成json返回給客戶端。讓datagrid進行局部刷新。由於要分頁,因此還傳遞了page和rows,分別表示當前頁碼(從1開始)和每頁顯示多少條記錄。
可以參考這個鏈接了解更多關於easyUI http://www.jeasyui.net/tutorial/21.html
那么,我們服務端響應的數據格式應該是什么樣子的呢?EasyUI中datagrid控件要求的數據格式為:{total:"2",rows:[{"id":"1","name":"張三"},{"id":"2","name":"李四"}]}
返回過濾數據顯示,該函數帶一個參數"data"用來指向源數據(即:獲取的數據源,比如json對象)。您可以改變源數據的標准數據格式,但是這個函數必須返回包含total和rows屬性的標准數據對象。還要就是rows當中的字段名稱必須和<table>表格里面定義的字段名稱一致。我們一般采用用一個pojo類來返回前台所需要的數據,而我們rows當中的json數據則一般是由Java對象轉換而來,多個對象的話就把一個集合轉換為json串。
下面我們來新建一個pojo類EasyUIDataGridResult,由於這個pojo類有可能被多個服務所調用,因此我們把它放到taotao-common工程下,我們新建一個com.taotao.common.pojo包並在該包下新建一個EasyUIDataGridResult類,該類的代碼如下圖右側所示,必須注意的是,屬性的名稱必須叫toal和rows,另外由於rows集合可能是各種不同的對象,因此我們便不再使用泛型,直接用List表示類型,它可以裝任意類型的對象。由於pojo要在服務端和客戶端進行傳輸,因此一定要實現序列化接口。
![]()
|
三.核心代碼的實現
1.dao層
我們使用反向代理生成的 mapper 結合 PageHelper 即可,不需要編寫任何代碼。
2.service層
3.控制層controller
至此,查詢商品信息列表功能實現