午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

主頁 > 知識庫 > MyBatis攔截器實現分頁功能的實現方法

MyBatis攔截器實現分頁功能的實現方法

熱門標簽:電話機器人免費嗎 電銷機器人價格多少錢一臺 地圖標注圖標素材入駐 400電話申請什么好 好搜地圖標注 龍圖酒吧地圖標注 百度地圖標注地方備注 怎么辦理400電話呢 怎么申請400電話申請

MyBatis攔截器實現分頁功能的實現方法

前言:

首先說下實現原理。使用攔截器攔截原始的sql,然后加上分頁查詢的關鍵字和屬性,拼裝成新的sql語句再交給mybatis去執行。

除了業務代碼之外,需要寫的東西不多,提幾個關鍵的:

1、分頁對象Page類。給該對象設置一個當前頁數(前端給)、總記錄數(攔截器內賦值)2個參數,他就能幫你計算出分頁sql語句用的2個參數。

/**
 * 分頁對應的實體類
 */
public class Page {
  /**
   * 總條數
   */
  private int totalNumber;
  /**
   * 當前第幾頁
   */
  private int currentPage;
  /**
   * 總頁數
   */
  private int totalPage;
  /**
   * 每頁顯示條數
   */
  private int pageNumber = 5;
  /**
   * 數據庫中limit的參數,從第幾條開始取
   */
  private int dbIndex;
  /**
   * 數據庫中limit的參數,一共取多少條
   */
  private int dbNumber;

  /**
   * 根據當前對象中屬性值計算并設置相關屬性值
   */
  public void count() {
    // 計算總頁數
    int totalPageTemp = this.totalNumber / this.pageNumber;
    int plus = (this.totalNumber % this.pageNumber) == 0 ? 0 : 1;
    totalPageTemp = totalPageTemp + plus;
    if(totalPageTemp = 0) {
      totalPageTemp = 1;
    }
    this.totalPage = totalPageTemp;

    // 設置當前頁數
    // 總頁數小于當前頁數,應將當前頁數設置為總頁數
    if(this.totalPage  this.currentPage) {
      this.currentPage = this.totalPage;
    }
    // 當前頁數小于1設置為1
    if(this.currentPage  1) {
      this.currentPage = 1;
    }

    // 設置limit的參數
    this.dbIndex = (this.currentPage - 1) * this.pageNumber;
    this.dbNumber = this.pageNumber;
  }

  public int getTotalNumber() {
    return totalNumber;
  }

  public void setTotalNumber(int totalNumber) {
    this.totalNumber = totalNumber;
    this.count();
  }

  public int getCurrentPage() {
    return currentPage;
  }

  public void setCurrentPage(int currentPage) {
    this.currentPage = currentPage;
  }

  public int getTotalPage() {
    return totalPage;
  }

  public void setTotalPage(int totalPage) {
    this.totalPage = totalPage;
  }

  public int getPageNumber() {
    return pageNumber;
  }

  public void setPageNumber(int pageNumber) {
    this.pageNumber = pageNumber;
    this.count();
  }

  public int getDbIndex() {
    return dbIndex;
  }

  public void setDbIndex(int dbIndex) {
    this.dbIndex = dbIndex;
  }

  public int getDbNumber() {
    return dbNumber;
  }

  public void setDbNumber(int dbNumber) {
    this.dbNumber = dbNumber;
  }
}

2、關鍵的攔截器實現

package com.imooc.interceptor;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Map;
import java.util.Properties;

import org.apache.ibatis.executor.parameter.ParameterHandler;
import org.apache.ibatis.executor.statement.StatementHandler;
import org.apache.ibatis.mapping.BoundSql;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.plugin.Intercepts;
import org.apache.ibatis.plugin.Invocation;
import org.apache.ibatis.plugin.Plugin;
import org.apache.ibatis.plugin.Signature;
import org.apache.ibatis.reflection.DefaultReflectorFactory;
import org.apache.ibatis.reflection.MetaObject;
import org.apache.ibatis.reflection.SystemMetaObject;

import com.imooc.entity.Page;

/**
 * 分頁攔截器
 * 
 * @author Skye
 *
 */
@Intercepts({
    @Signature(type = StatementHandler.class, method = "prepare", args = { Connection.class, Integer.class }) })
public class PageInterceptor implements Interceptor {

  public Object intercept(Invocation invocation) throws Throwable {
    StatementHandler statementHandler = (StatementHandler) invocation.getTarget();
    MetaObject metaObject = MetaObject.forObject(statementHandler, SystemMetaObject.DEFAULT_OBJECT_FACTORY,
        SystemMetaObject.DEFAULT_OBJECT_WRAPPER_FACTORY, new DefaultReflectorFactory());
    MappedStatement mappedStatement = (MappedStatement) metaObject.getValue("delegate.mappedStatement");
    //通過MetaObject元數據取得方法名id:com.XXX.queryMessageListByPage
    String id = mappedStatement.getId();
    //匹配在mybatis中定義的與分頁有關的查詢id
    if (id.matches(".+ByPage$")) {
      //BoundSql中有原始的sql語句和對應的查詢參數
      BoundSql boundSql = statementHandler.getBoundSql();
      MapString, Object> params = (MapString, Object>) boundSql.getParameterObject();
      Page page = (Page) params.get("page");
      String sql = boundSql.getSql();
      String countSql = "select count(*)from (" + sql + ")a";
      Connection connection = (Connection) invocation.getArgs()[0];
      PreparedStatement countStatement = connection.prepareStatement(countSql);
      ParameterHandler parameterHandler = (ParameterHandler) metaObject.getValue("delegate.parameterHandler");
      parameterHandler.setParameters(countStatement);
      ResultSet rs = countStatement.executeQuery();
      if (rs.next()) {
        //為什么是getInt(1)? 因為數據表的列是從1開始計數
        page.setTotalNumber(rs.getInt(1));
        System.out.println("攔截器得知page的記錄總數為:" + page.getTotalNumber());
      }
      String pageSql = sql + " limit " + page.getDbIndex() + "," + page.getDbNumber();
      metaObject.setValue("delegate.boundSql.sql", pageSql);
    }
    return invocation.proceed();
  }

  /**
   * @param target
   * 被攔截的對象
   */
  public Object plugin(Object target) {
    // 如果將攔截器類比喻為代購票的公司,那this就是代購業務員(進入方法前是無代理購票能力業務員,進入后成為有代理能力的業務員)
    // 通過注解獲取攔截目標的信息,如果不符合攔截要求就返回原目標,如果符合則使用動態代理生成代理對象
    return Plugin.wrap(target, this);
  }

  public void setProperties(Properties properties) {
    // TODO Auto-generated method stub

  }

}

3、mybatis-config.xml里面注冊自己寫的攔截器

 !-- 自定義的分頁攔截器 -->
  plugins>
    plugin interceptor="你寫的攔截器全類名">
    /plugin>
  /plugins>

Dao層相關的mapper.xml里面的sql語句不用做改動。

4、前端需要給后端一個顯示哪一頁的參數,通過service層組裝查詢參數之后交給MyBatis去查分頁數據,我定義的分頁DAO接口返回的數據是一個list,包含了分頁查詢結果。前端可以用jquery_pagination插件去實現分頁的展示,具體去官方github看怎么設置吧。

!--pagination需要的腳本-->
%
  // 獲取請求的上下文
  String context = request.getContextPath();
%>
link href="../css/pagination.css" rel="external nofollow" rel="stylesheet" type="text/css"/>
script type="text/javascript" src="../js/jquery-1.11.3.js">/script>
script type="text/javascript" src="../js/jquery.pagination.js">/script>
script type="text/javascript">

// 點擊分頁按鈕以后觸發的動作
function handlePaginationClick(new_page_index, pagination_container) {
!--從stuForm表單提交當前頁的參數.可以使用restful方式,讓springmvc使用@PathVariable關鍵字定義的形參去接。這2個參數是分頁控件自己提供的,不需要我們去自己找,但是計數從0開始,而我們后臺分頁計數從1開始,因此要手動加1。 -->
  $("#stuForm").attr("action", "你定義的分頁查詢url/"+(new_page_index+1));
  $("#stuForm").submit();
  return false;
}

$(function(){
  $("#News-Pagination").pagination(${result.totalRecord}, {
    items_per_page:${result.pageSize}, // 每頁顯示多少條記錄
    current_page:${result.currentPage} - 1, // 當前顯示第幾頁數據
    num_display_entries:8, // 分頁顯示的條目數
    next_text:"下一頁",
    prev_text:"上一頁",
    num_edge_entries:2, // 連接分頁主體,顯示的條目數
    callback:handlePaginationClick(當前頁,分頁div的id), //執行的回調函數
    load_first_page:false //防止頁面一直刷新( 這條非常重要!)
  });
});
/script>
!-- 這部分用c:forEach標簽打印查詢結果的表格-->
!--分頁控件名稱-->
div id="News-Pagination">/div>

寫這篇總結的目的是希望形成一個分頁功能的整體解決方案(前端+后端都涵蓋到)。4月17、18日開始我會寫一個小系統將前段時間所學都用上,完了之后會回來更新這篇文章里面不正確的地方。

如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

您可能感興趣的文章:
  • mybatisplus 的SQL攔截器實現關聯查詢功能
  • Mybatis自定義攔截器和插件開發詳解
  • mybatis 自定義實現攔截器插件Interceptor示例
  • mybatis 通過攔截器打印完整的sql語句以及執行結果操作
  • Mybatis Plugin攔截器開發過程詳解
  • 簡單了解mybatis攔截器實現原理及實例
  • mybatis攔截器實現通用權限字段添加的方法
  • Mybatis中攔截器的簡單實現方法
  • mybatis攔截器與分頁插件實例教程
  • Mybatis Interceptor 攔截器的實現
  • MyBatis攔截器的原理與使用

標簽:廣西 汕尾 浙江 撫順 固原 溫州 內江 防疫工作

巨人網絡通訊聲明:本文標題《MyBatis攔截器實現分頁功能的實現方法》,本文關鍵詞  MyBatis,攔截,器,實現,分頁,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MyBatis攔截器實現分頁功能的實現方法》相關的同類信息!
  • 本頁收集關于MyBatis攔截器實現分頁功能的實現方法的相關信息資訊供網民參考!
  • 推薦文章
    福利在线一区二区| 色综合视频网站| 国产不卡在线播放| 久久久久久蜜桃| 国产三级三级三级看三级| 99re国产视频| 久久视频中文字幕| 日韩欧美中文字幕精品| 亚洲欧美另类小说视频| av电影在线观看完整版一区二区| 国产熟人av一二三区| 日韩av高清在线看片| av动漫在线免费观看| 红桃一区二区三区| 亚洲a在线播放| 亚洲在线第一页| 国产精品美女xx| 日韩av电影免费观看| 国产又大又长又粗又黄| 国产在线播放观看| 人妻激情另类乱人伦人妻| 一区二区在线观看网站| 美女主播视频一区| 免费在线一区二区| 岛国一区二区三区高清视频| 成人欧美在线视频| 成人写真视频福利网| 97热在线精品视频在线观看| 日韩av高清不卡| 国产在线播放不卡| 国产精品区一区二区三在线播放 | 欧美大片免费播放器| 日韩黄色免费观看| 国产在线一级片| 少妇高潮一区二区三区99小说| 日韩av一二三| 国产精品色哟哟| 欧美视频裸体精品| 亚洲老司机av| 91超碰中文字幕久久精品| 成人免费福利在线| 色一情一乱一伦一区二区三欧美| 国产精品丝袜高跟| 欧美午夜精品理论片a级大开眼界| 日韩一级性生活片| 亚洲免费在线播放视频| 五月天中文字幕在线| 欧美性生交大片| av一区二区三| 91伊人久久大香线蕉| 色综合久久久久综合体| 亚洲欧洲自拍偷拍| 91久久精品国产91久久性色| 欧美日韩激情四射| 欧美三级视频网站| 黄色av网址在线| 日本一区二区三区久久久久久久久不 | 男人操女人的视频网站| 国产在线观看第一页| 激情图区综合网| 国产亚洲一区字幕| 91黄视频在线| 国产亚洲欧洲在线| 欧美中文在线观看国产| 精品国产乱码久久久久久蜜柚 | 欧美国产精品专区| 亚洲美女av网站| 国产精品区一区二区三在线播放| www.久久91| 国产一级精品毛片| 久久久精品国产免大香伊 | 国产精品蜜臀在线观看| 日韩亚洲国产中文字幕欧美| 国内精品久久久久久影视8| 亚洲国产一区二区三区在线 | 国产成人自拍高清视频在线免费播放| 一区二区三区产品免费精品久久75| 欧美亚洲国产bt| 久久亚洲精品成人| 久久国产精品久久精品国产| 97公开免费视频| 亚洲欧美一区二区三区四区五区| 色一情一乱一乱一区91av| 久久久久国产精品人| 亚洲精品一区二区在线观看| 亚洲精品中文字幕女同| 精品伦精品一区二区三区视频 | 51成人做爰www免费看网站| 国产91在线免费观看| 国产熟女一区二区三区五月婷 | 国产福利一区二区三区| 日韩欧美国产一二三区| 久久精品aaaaaa毛片| 99re久久精品国产| 久久福利资源站| 这里只有精品99re| 99视频免费观看| 人妻丰满熟妇av无码久久洗澡| 国产在线视频二区| 久久久久免费观看| 久久精品小视频| 国产成人永久免费视频| www.久久网| 日本乱人伦aⅴ精品| 96国产粉嫩美女| 少妇真人直播免费视频| 久久电影国产免费久久电影 | 欧美午夜精品理论片a级大开眼界| 欧美三根一起进三p| 中文字幕欧美激情| 91国内精品久久| 免费黄色av网址| 在线看免费毛片| 六月婷婷综合网| 日韩三区在线观看| 国产成年人在线观看| 六月丁香婷婷综合| 一区二区三区欧美亚洲| 99re视频在线观看| 国产二区视频在线播放| 中文字幕av免费观看| 欧美日韩国产精品一区| 5566中文字幕一区二区| 国产精品久久久久久成人| 久久精品视频网| 欧美野外猛男的大粗鳮| 国产日韩视频一区| 国产suv精品一区二区三区| 久久久久99精品久久久久| 激情五月亚洲色图| 美女国产一区二区三区| 亚洲视频在线播放| www.com毛片| 蜜桃av一区二区在线观看| 精品国模在线视频| 欧美女同在线观看| 成人福利视频网站| 欧洲成人免费aa| 小泽玛利亚一区| 一本一道波多野结衣一区二区| 日日噜噜噜噜夜夜爽亚洲精品| 欧美国产一级片| 欧美另类变人与禽xxxxx| 青青在线免费视频| 日韩中文字幕区一区有砖一区| 中文字幕av一区| 少妇极品熟妇人妻无码| 国产免费成人在线视频| 999视频在线观看| 国产91国语对白在线| 欧美三级xxx| 亚洲精品一区二区三区樱花| 不卡的日韩av| 色播久久人人爽人人爽人人片视av| 无码人妻一区二区三区精品视频| 国产精品一区免费视频| 国产成人欧美在线观看| 男人的天堂一区二区| 精品国产免费久久| 国产三级日本三级在线播放| 94色蜜桃网一区二区三区| 91sa在线看| 日韩在线观看第一页| 亚洲精品999| 玖玖爱在线精品视频| 欧美日韩中文字幕日韩欧美| 成人精品视频在线播放| 国产成人午夜精品5599 | 91精品国产综合久久久久久| 黑人糟蹋人妻hd中文字幕| 国产成人一区二区精品非洲| 国产成人在线亚洲欧美| 六月丁香婷婷综合| 欧美成人a∨高清免费观看| 五月婷婷六月丁香激情| av不卡在线观看| 成人免费在线一区二区三区| 国产成年妇视频| 综合av色偷偷网| 亚洲 欧美 日韩在线| 亚洲图片欧美激情| 欧美连裤袜在线视频| 亚洲精品国产精品乱码不卡| 菠萝蜜影院一区二区免费| 日本一区二区在线观看视频| 亚洲免费在线视频| 一区二区三区四区视频在线 | 日本福利片在线观看| 亚洲激情中文字幕| 青青草手机视频在线观看| 尤物99国产成人精品视频| 精品国产乱码久久久久久鸭王1 | 久久精品夜色噜噜亚洲a∨| 国产综合动作在线观看| 国产精品12区| 在线国产精品网| 国产日韩欧美不卡| 久操网在线观看| 亚洲一区二区三区中文字幕在线 | 国产精品美女在线| 黄色一级a毛片| 国产精华一区二区三区| 极品美女销魂一区二区三区免费 | 99精品久久久久| 亚洲偷欧美偷国内偷| 神马久久精品综合| 亚洲国产高清高潮精品美女| 污版视频在线观看| 色乱码一区二区三区88| 少妇极品熟妇人妻无码| 欧美精品一卡二卡| 这里只有精品在线观看视频| 欧美丝袜丝交足nylons图片| 日本女优爱爱视频| 欧美香蕉大胸在线视频观看| 一级片免费在线观看视频| 日韩欧中文字幕| 哪个网站能看毛片| 亚洲视频一区二区免费在线观看| 日本一本二本在线观看| 狠狠爱在线视频一区| 成人免费av片| 揄拍成人国产精品视频| 亚洲高清视频免费观看| 色系列之999| 国产在线一级片| 国产精品嫩草影院久久久| 天天躁日日躁狠狠躁喷水| 7777精品久久久大香线蕉小说| 国产精品18久久久久久vr| 亚洲一区影院| 欧美性xxxxxx| 国产精品久久国产精麻豆96堂| 亚洲片在线资源| 免费又黄又爽又猛大片午夜| 国产精品美女视频网站| www..com久久爱| 在线免费观看视频黄| 日韩免费看网站| 日本中文字幕在线| 97精品在线观看| 精品午夜久久福利影院| 激情伊人五月天| 欧美亚洲免费在线一区| 极品久久久久久| 自拍亚洲一区欧美另类| 国产av一区二区三区| 国产精品 欧美在线| 国产**成人网毛片九色| 亚洲黄色av网址| 日韩av在线最新| 国产视频在线免费观看| 九九99玖玖| 午夜精品久久久久久久| 日韩av片在线免费观看| 国产精品9999| 91偷拍与自偷拍精品| 中文字幕第3页| 欧美猛交免费看| 美女任你摸久久| 中文字幕一区二区三区在线乱码| 一区二区免费看| 免费网站观看www在线观| 国产精品久久久| kk眼镜猥琐国模调教系列一区二区| 五月天激情视频在线观看| 中文字幕自拍vr一区二区三区| 天天综合天天色| 另类小说第一页| 欧美成人一区在线| 久久国产精品区| 国产aⅴ爽av久久久久| 91精品国产高清自在线看超| 亚洲欧美日韩综合aⅴ视频| 少妇aaaaa| 区一区二区三区中文字幕| 亚洲白虎美女被爆操| 久久精品国产精品青草| 国产激情第一页| 97超碰人人看人人 | 日韩av电影院| 久久免费美女视频| 欧美激情视频二区| 999国产在线| 亚洲黄色av一区| 国内偷拍精品视频| 久久久久欧美| 欧美一级日韩一级| 久久一区精品| 91视频在线网站| 欧美lavv| 亚洲精品视频中文字幕| 成人动漫一区二区在线| 99精品全国免费观看| 成人区精品一区二区| 91成人在线观看喷潮| 亚洲精品一级片| 亚洲欧美手机在线| 91禁外国网站| 亚洲国产美女搞黄色| 正在播放亚洲精品| 国产黄页在线观看| 欧美自拍大量在线观看| 精品免费在线视频| 伊人久久成人网| 日本少妇xxxx软件| 国产伦理一区二区三区| 精品美女一区二区| 国产午夜精品久久久久久久 | 日本黄色网址大全| 蜜桃麻豆91| 尤物九九久久国产精品的特点| 国产免费久久久| 成年人在线观看视频免费| 国产精品视频白浆免费视频| 日韩美一区二区三区| 91老师国产黑色丝袜在线| 国产精品第6页| 中文字幕avav| 日韩欧美一区二区视频在线播放 | 国产一区二区三区不卡在线观看 | 欧美伦理一区二区| 色综合视频网站| 欧洲色大大久久| 日本美女一区二区三区视频| 蜜桃av.com| 成人在线免费在线观看| 91免费版网站在线观看| 亚洲欧美制服丝袜| 国产精品久久午夜夜伦鲁鲁| 丰满肥臀噗嗤啊x99av| 超碰人人人人人人人| 男人j进女人j| 国产精品自产拍在线观| 免费不卡在线观看| 欧美色图一区二区| 日韩激情免费视频| 亚洲最大福利网站| zzijzzij亚洲日本成熟少妇| 色综合久久九月婷婷色综合| 狠狠狠色丁香婷婷综合激情| 老熟妇一区二区三区| 精品国产国产综合精品| 美女福利视频在线| 五月婷婷综合色| www.成人av| 91理论片午午论夜理片久久| 日韩视频免费在线| 欧美亚洲免费在线一区| 亚洲成a人片在线不卡一二三区 | 日韩欧美国产小视频| 欧美日韩亚洲高清| 自拍偷拍欧美激情| 国产精品一区专区| 国产精品乱码一区二区| 国产 欧美 在线| 国产精品涩涩涩视频网站| 亚洲国产日韩综合一区| 成人国产在线视频| 丝袜亚洲另类欧美重口| 欧美mv和日韩mv的网站| 欧美自拍丝袜亚洲| 亚洲欧洲日韩女同| 成人国产精品免费网站| 日av在线不卡| 亚洲av永久纯肉无码精品动漫| 法国空姐在线观看免费| 成人黄视频免费| 国产精品自拍偷拍视频| 51色欧美片视频在线观看| 深夜福利国产精品| 欧美在线你懂得| 亚洲成av人**亚洲成av**| 福利视频网站一区二区三区| 91激情在线观看| 国产av精国产传媒| 99国产精品一区二区三区| 黄色在线视频网址| 少妇aaaaa| 中出视频在线观看| 在线视频 日韩| www日本在线观看| 性鲍视频在线观看| 91n.com在线观看| 狠狠干 狠狠操| 国产精品自拍合集| 久久久久99精品成人片| wwwxxx黄色片| 日本三日本三级少妇三级66| 欧洲美女和动交zoz0z| 日韩欧美国产二区| 7777在线视频| 日本在线观看免费视频| 亚洲免费在线播放视频| 制服丝袜综合网| 久久人妻精品白浆国产| 国产福利在线免费| 日韩大尺度视频| 亚洲自拍偷拍精品| 人人妻人人澡人人爽人人精品| 亚洲一二三精品| 日本一本高清视频| 中文字幕在线网站| 日本999视频| 波多野吉衣在线视频| 欧美性受xxxx黑人| 日韩av在线播| 亚洲av无码专区在线| 国产伦精品一区二区三区在线观看| 97精品久久久久中文字幕|