概述:
? ? ? ?Pagehelper:是中國(guó)的開源的mybatis分頁插件,通過該插件可以非常簡(jiǎn)單的實(shí)現(xiàn)分頁功能;
步驟(maven方式):
? ? 1)、引入PageHelper jar包坐標(biāo);
? ? 代碼截圖:

? ? 2)、在SqlSessionFactoryBean中配置PageHelper的分頁插件;
? ? ? ? ? ? 注:該插件的位置是固定的不能隨意更改;
? ? 代碼截圖:

? ? ? ? 說明:
? ? ? ? ? ? ? PageInterceptor實(shí)例中的參數(shù),可以設(shè)置多個(gè),具體參數(shù)以及參數(shù)介紹如下:
? ? ? ? ? ? ? ? 參數(shù):
? ? ? ? ? ? ? ? ? ????helperDialect=mysql
????reasonable=true
???? supportMethodsArguments=true
????params=count=countSql
????utoRuntimeDialect=true
? ? ? ? ? ? ? ? ?參數(shù)說明:
? ? ? ? ? ? ? 1)、? helperDialect:分頁插件會(huì)自動(dòng)檢測(cè)當(dāng)前的數(shù)據(jù)庫(kù)鏈接,自動(dòng)選擇合適的分頁方式。 你可以配置helperDialect屬性來指定分頁插件使用哪種方言。配置時(shí),可以使用下面的縮寫值: ? ?
????????oracle,mysql,mariadb,sqlite,hsqldb,postgresql,db2,sqlserver,informix,h2,sqlserver2012,derby?
? ? ? ? 特別注意:使用 SqlServer2012 數(shù)據(jù)庫(kù)時(shí),需要手動(dòng)指定為sqlserver2012,否則會(huì)使用 SqlServer2005 的方式進(jìn)行分頁。
? ? ?????你也可以實(shí)現(xiàn)AbstractHelperDialect,然后配置該屬性為實(shí)現(xiàn)類的全限定名稱即可使用自定義的實(shí)現(xiàn)方法。
? ? ? ? ? ? ? ?2)、offsetAsPageNum:默認(rèn)值為false,該參數(shù)對(duì)使用RowBounds作為分頁參數(shù)時(shí)有效。 當(dāng)該參數(shù)設(shè)置為true時(shí),會(huì)將RowBounds中的offset參數(shù)當(dāng)成pageNum使用,可以用頁碼和頁面大小兩個(gè)參數(shù)進(jìn)行分頁。
? ? ? ? ? ? ? ?3)、rowBoundsWithCount:默認(rèn)值為false,該參數(shù)對(duì)使用RowBounds作為分頁參數(shù)時(shí)有效。 當(dāng)該參數(shù)設(shè)置為true時(shí),使用RowBounds分頁會(huì)進(jìn)行 count 查詢。
? ? ? ? ? ? ? ?4)、pageSizeZero:默認(rèn)值為false,當(dāng)該參數(shù)設(shè)置為true時(shí),如果pageSize=0或者RowBounds.limit = 0就會(huì)查詢出全部的結(jié)果(相當(dāng)于沒有執(zhí)行分頁查詢,但是返回結(jié)果仍然是Page類型)。
? ? ? ? ? ? ? ?5)、reasonable:分頁合理化參數(shù),默認(rèn)值為false。當(dāng)該參數(shù)設(shè)置為true時(shí),pageNum<=0時(shí)會(huì)查詢第一頁,pageNum>pages(超過總數(shù)時(shí)),會(huì)查詢最后一頁。默認(rèn)false時(shí),直接根據(jù)參數(shù)進(jìn)行查詢。
? ? ? ? ? ? ? ?6)、params:為了支持startPage(Object params)方法,增加了該參數(shù)來配置參數(shù)映射,用于從對(duì)象中根據(jù)屬性名取值, 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默認(rèn)值, 默認(rèn)值為:pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero=pageSizeZero。
? ? ? ? ? ? ? ?7)、supportMethodsArguments:支持通過 Mapper 接口參數(shù)來傳遞分頁參數(shù),默認(rèn)值false,分頁插件會(huì)從查詢方法的參數(shù)值中,自動(dòng)根據(jù)上面params配置的字段中取值,查找到合適的值時(shí)就會(huì)自動(dòng)分頁。 使用方法可以參考測(cè)試代碼中的com.github.pagehelper.test.basic包下的ArgumentsMapTest和ArgumentsObjTest。
? ? ? ? ? ? ? ?8)、autoRuntimeDialect:默認(rèn)值為false。設(shè)置為true時(shí),允許在運(yùn)行時(shí)根據(jù)多數(shù)據(jù)源自動(dòng)識(shí)別對(duì)應(yīng)方言的分頁 (不支持自動(dòng)選擇sqlserver2012,只能使用sqlserver)。
? ? ? ? ? ? ? ?9)、closeConn:默認(rèn)值為true。當(dāng)使用運(yùn)行時(shí)動(dòng)態(tài)數(shù)據(jù)源或沒有設(shè)置helperDialect屬性自動(dòng)獲取數(shù)據(jù)庫(kù)類型時(shí),會(huì)自動(dòng)獲取一個(gè)數(shù)據(jù)庫(kù)連接, 通過該屬性來設(shè)置是否關(guān)閉獲取的這個(gè)連接,默認(rèn)true關(guān)閉,設(shè)置為false后,不會(huì)關(guān)閉獲取的連接,這個(gè)參數(shù)的設(shè)置要根據(jù)自己選擇的數(shù)據(jù)源來決定。
?3)、編寫業(yè)務(wù)層代碼(設(shè)置分頁所必須的參數(shù));
? ? ? ? ? ? 我們只需要向PageHelper所提供的實(shí)例中傳入分頁所必須獲取的參數(shù)(當(dāng)前頁索引、每頁展示的數(shù)據(jù)量)即可;
? ? ? ? ? ? 代碼截圖:

? ?4)、編寫Controller層代碼(將分頁展示的數(shù)據(jù)傳入PageHelper所提供的分頁對(duì)象中);
? ? ? ? ? ? ? ?說明:由于前臺(tái)分頁展示所需要的數(shù)據(jù)較多,所以PageHelper提供了一個(gè)類來存取分頁展示所需要的信息;
? ? ? ? 代碼截圖:

效果演示(最終結(jié)果):
? ? 代碼截圖:
