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