国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - SpringMvc+Mybatis+Pagehelper分頁詳解

SpringMvc+Mybatis+Pagehelper分頁詳解

2020-07-22 14:40Net-Bean Java教程

這篇文章主要介紹了SpringMvc+Mybatis+Pagehelper分頁詳解,非常不錯,具有參考借鑒價值,需要的朋友可以參考下的相關(guān)資料

最近公司需要做一個告警頁面的功能,需要分頁,查了很多資料發(fā)現(xiàn)PageHelper比較合適

故寫一篇從零開始的PageHelper使用的教程,也記錄下忙活一天的東西

1.首先需要在項目中添加PageHelper的依賴,這里我用的Maven添加

?
1
2
3
4
5
<dependency>
 <groupId>com.github.pagehelper</groupId>
 <artifactId>pagehelper</artifactId>
 <version>4.1.6</version>
</dependency>

2.在mybatis的配置文件中添加對pagehelper 的配置

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<configuration>  
  <plugins> 
    <!-- com.github.pagehelper為PageHelper類所在包名 --> 
    <plugin interceptor="com.github.pagehelper.PageHelper"
      <!-- 4.0.0以后版本可以不設(shè)置該參數(shù) --> 
      <property name="dialect" value="mysql"/> 
      <!-- 該參數(shù)默認為false --> 
      <!-- 設(shè)置為true時,會將RowBounds第一個參數(shù)offset當(dāng)成pageNum頁碼使用 --> 
      <!-- 和startPage中的pageNum效果一樣--> 
      <property name="offsetAsPageNum" value="true"/> 
      <!-- 該參數(shù)默認為false --> 
      <!-- 設(shè)置為true時,使用RowBounds分頁會進行count查詢 --> 
      <property name="rowBoundsWithCount" value="true"/> 
      <!-- 設(shè)置為true時,如果pageSize=0或者RowBounds.limit = 0就會查詢出全部的結(jié)果 --> 
      <!-- (相當(dāng)于沒有執(zhí)行分頁查詢,但是返回結(jié)果仍然是Page類型)--> 
      <property name="pageSizeZero" value="true"/> 
      <!-- 3.3.0版本可用 - 分頁參數(shù)合理化,默認false禁用 --> 
      <!-- 啟用合理化時,如果pageNum<1會查詢第一頁,如果pageNum>pages會查詢最后一頁 --> 
      <!-- 禁用合理化時,如果pageNum<1或pageNum>pages會返回空數(shù)據(jù) --> 
      <property name="reasonable" value="true"/> 
      <!-- 3.5.0版本可用 - 為了支持startPage(Object params)方法 --> 
      <!-- 增加了一個`params`參數(shù)來配置參數(shù)映射,用于從Map或ServletRequest中取值 --> 
      <!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,orderBy,不配置映射的用默認值 --> 
      <!-- 不理解該含義的前提下,不要隨便復(fù)制該配置 --> 
      <!-- <property name="params" value="pageNum=start;pageSize=limit;"/> --> 
      <!-- 支持通過Mapper接口參數(shù)來傳遞分頁參數(shù) --> 
      <property name="supportMethodsArguments" value="true"/> 
      <!-- always總是返回PageInfo類型,check檢查返回類型是否為PageInfo,none返回Page --> 
      <property name="returnPageInfo" value="check"/> 
    </plugin> 
  </plugins> 
</configuration>

3.添加一個PageBean的類來儲存分頁的信息

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
public class PageBean<T> implements Serializable {
   private static final long serialVersionUID = 1L;
    private long total; //總記錄數(shù)
    private List<T> list; //結(jié)果集
    private int pageNum; //第幾頁
    private int pageSize; //每頁記錄數(shù)
    private int pages; // 總頁數(shù)
    private int size; //當(dāng)前頁的數(shù)量<=pageSize
 
    public PageBean(List<T> list){
      if (list instanceof Page){
        Page<T> page = (Page<T>) list;
        this.pageNum = page.getPageNum();
        this.pageSize = page.getPageSize();
        this.total = page.getTotal();
        this.pages = page.getPages();
        this.list = page;
        this.size = page.size();
      }
    }
    public long getTotal() {
      return total;
    }
    public void setTotal(long total) {
      this.total = total;
    }
    public List<T> getList() {
      return list;
    }
    public void setList(List<T> list) {
      this.list = list;
    }
    public int getSize() {
      return size;
    }
    public void setSize(int size) {
      this.size = size;
    }
    public int getPageNum() {
      return pageNum;
    }
    public void setPageNum(int pageNum) {
      this.pageNum = pageNum;
    }
    public int getPageSize() {
      return pageSize;
    }
    public void setPageSize(int pageSize) {
      this.pageSize = pageSize;
    }
    public int getPages() {
      return pages;
    }
    public void setPages(int pages) {
      this.pages = pages;
    }
  }

下面就是業(yè)務(wù)邏輯的代碼了

4.首先從mapper.xml文件寫起,操作數(shù)據(jù)庫的sql,查出我們所需要的數(shù)據(jù)

?
1
2
3
4
5
6
7
<select id="selectallList" parameterType="com.alarm.bean.AlarmParamModel"
  resultMap="AlarmMap">
  select message_id, seqnum, message_type, process_status,
  distribute_status, processor, occur_time, close_time, 
  system_id, group_id, warn_level, message_content
  from td_alarm_info
</select>

5.mapper的接口方法

?
1
public List<AlarmParamModel> selectallList(AlarmParamModel model);

6.service的接口方法

?
1
Datagrid selectallList(AlarmParamModel model,int pageNum, int pageSize);

7.service的實現(xiàn)類

   這里需要注意下,是分頁的主要邏輯。pageNum表示頁碼,pageSize表示每頁顯示的數(shù)目,startPag方法是初始的頁面,orderBy方法是將數(shù)據(jù)按某個字段進行排序,這里我用的是occr_time的降序(desc)

?
1
2
3
4
5
6
7
8
public Datagrid selectallList(AlarmParamModel model,int pageNum, int pageSize){
    PageHelper.startPage(pageNum, pageSize);
    PageHelper.orderBy("occur_time desc");
     List<AlarmParamModel> list = this.alarmMgrMapper.selectallList(model);
     PageInfo<AlarmParamModel> pageInfo = new PageInfo<AlarmParamModel>(list);
    Datagrid datagrid = new Datagrid(pageInfo.getTotal(),pageInfo.getList());
     return datagrid;
  }

8.注意到我這邊用了一個Datagrid類,是用于向前臺傳數(shù)據(jù)用的類,包括total(總數(shù))和rows(數(shù)據(jù))

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Datagrid {
  private long total;
  private List rows = new ArrayList<>();
  public Datagrid() {
    super();
  }
  public Datagrid(long total, List rows) {
    super();
    this.total = total;
    this.rows = 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;
  }
}

9.開始寫controller層,調(diào)用之前寫的方法

  這里需要注意的是,offset和limit 是前臺傳來的頁碼和每頁顯示的數(shù)量,區(qū)別于bootstraptable 的offset和limit,那個offset表示的是偏移量,即如果每頁顯示10條數(shù)據(jù),那么bootstrap中的第二頁表示的offset就是10,第一頁和第三頁分別是0和20。而我這里的offset就是指代的pageNum。

?
1
2
3
4
5
6
7
8
@RequestMapping(value = "/AlarmInfo/list", method = {RequestMethod.GET,RequestMethod.POST})
  @ResponseBody
  public Datagrid alarmInfo(AlarmParamModel model,@RequestParam(value="offset",defaultValue="0",required=false)Integer pageNum, 
      @RequestParam(value="limit",defaultValue="10",required=false)Integer pageSize) 
  {
    Datagrid datagrid = this.alarmMgrService.selectallList(model,pageNum, pageSize);
    return datagrid;
  }

10. 到現(xiàn)在前臺的請求已經(jīng)可以獲取后臺的數(shù)據(jù)并且分頁了,我再將我的前臺bootstrap table 的配置貼一下

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$('#tb_departments').bootstrapTable({
      url: 'http://10.1.234.134:8088/api/AlarmInfo/list',     //請求后臺的URL(*)
      method: 'get',           //請求方式(*)
      striped: false,           //是否顯示行間隔色
      cache: false,            //是否使用緩存,默認為true,所以一般情況下需要設(shè)置一下這個屬性(*)
      pagination: true,          //是否顯示分頁(*)
      onlyInfoPagination:true,     //設(shè)置為 true 只顯示總數(shù)據(jù)數(shù),而不顯示分頁按鈕。需要 pagination='True'
      sortable: true,           //是否啟用排序
      sortOrder: "asc",          //排序方式
      queryParams: oTableInit.queryParams,//傳遞參數(shù)(*)
      sidePagination: "server",      //分頁方式:client客戶端分頁,server服務(wù)端分頁(*)
      pageNumber:1,            //初始化加載第一頁,默認第一頁
      pageSize: 10,            //每頁的記錄行數(shù)(*)
      pageList: [10, 25, 50, 100],    //可供選擇的每頁的行數(shù)(*)
      search: false,            //是否顯示表格搜索,此搜索是客戶端搜索,不會進服務(wù)端,所以,個人感覺意義不大
      strictSearch: true,
      showColumns: false,         //是否顯示所有的列
      showRefresh: false,         //是否顯示刷新按鈕
      minimumCountColumns: 2,       //最少允許的列數(shù)
      clickToSelect: true,        //是否啟用點擊選中行
      checkboxHeader:true,       //add
      height: 500,            //行高,如果沒有設(shè)置height屬性,表格自動根據(jù)記錄條數(shù)覺得表格高度
      uniqueId: "id",           //每一行的唯一標(biāo)識,一般為主鍵列
      showToggle:false,          //是否顯示詳細視圖和列表視圖的切換按鈕
      cardView: false,          //是否顯示詳細視圖
      detailView: true,
      detailFormatter:detailFormatter ,
      paginationHAlign:"left",
      paginationDetailHAlign:"right",

這里我沒有用bootstrap自帶的分頁按鈕,我是自己用jq寫的按鈕組,在下一篇文章我會把按鈕代碼貼出來,這樣可自定義的程度會高一些~  你也可以直接用bootstraptable子帶的分頁按鈕,把配置改下就好。

以上所述是小編給大家介紹的SpringMvc+Mybatis+Pagehelper分頁詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對服務(wù)器之家網(wǎng)站的支持!

原文鏈接:http://blog.csdn.net/qq_32715873/article/details/54016797

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人午夜毛片 | 爱色av网站| www.av在线| caoporn视频 | 日韩免费在线观看视频 | 国产免费爽爽视频在线观看 | 国产片在线免费观看 | av免费观看网页 | 国产精品美女久久久久久久网站 | 欧美亚洲国产一区 | 欧美精品91 | 综合婷婷| 精品欧美一区二区三区久久久 | 日韩精品免费一区二区夜夜嗨 | 91电影在线 | 少妇精品久久久久久久久久 | 很黄很色很爽的视频 | 欧美一级二级视频 | 这里只有精品视频在线 | 欧美成人毛片 | 日韩电影网站 | 久久综合九九 | 欧美99| 在线观看免费黄视频 | 日韩成人一级片 | 精品福利一区二区三区免费视频 | 亚洲电影在线观看 | 欧美怡红院视频一区二区三区 | 亚洲精品中文字幕 | 欧美午夜一区二区三区免费大片 | 成人精品在线视频 | 日本99精品 | 国产在线观看 | 毛片一级片 | a在线看 | 日韩美女在线 | 91精品福利少妇午夜100集 | 欧美精品导航 | 午夜视频| 日韩精品一区二区在线 | 国产精品香蕉 |