日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MyBatis之PageHelper分页操作

發布時間:2024/9/30 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MyBatis之PageHelper分页操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、定義

PageHelper用在mybatis插件里面,可以自動的為最近的sql語句進行分頁查詢,提供分頁的頁碼size和每頁數量num,在查詢過程中hi自動的拼接limit關鍵字,不用再改寫sql語句了

在PageHelper.startPage(); 在啟動查詢 List 數據的查詢之前時,會對最近的一個查詢進行起作用,但是對于間隔的查詢返回 List的數據,將不會有任何影響

springboot中Maven依賴

<!--pagehelper--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.1.8</version> </dependency>

二、mybatis-config.xml配置方式

可以在plugin里面設置屬性

<?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.PageInterceptor"><property name="reasonable" value="true"/><property name="pageSizeZero" value="true"/></plugin></plugins> </configuration>

三、Java Config配置方式

@Configuration @Slf4j public class InitBootConfig { ?@Autowiredprivate List<SqlSessionFactory> sqlSessionFactories; ?/*** 添加PageHelper攔截器*/@PostConstructpublic void addPageInterceptor() {PageInterceptor interceptor = new PageInterceptor();Properties properties = new Properties();properties.setProperty("reasonable", "true");properties.setProperty("pageSizeZero", "true");interceptor.setProperties(properties);for (SqlSessionFactory sqlSessionFactory : sqlSessionFactories) {sqlSessionFactory.getConfiguration().addInterceptor(interceptor);}} }

注意:二、三配置方式只能取一種,否則會報錯,且配置文件要和maven在同一模塊下

?

四、使用方式

保證線性安全

List<Country> list; if(param1 != null){PageHelper.startPage(1, 10);list = countryMapper.selectIf(param1); } else {list = new ArrayList<Country>(); } 這種寫法就能保證安全。

五、作用范圍

開啟分頁語句PageHelper.startPage(pageSize,pageNum)之后,只會對最近的sql語句進行分頁查詢操作,只會調用一次,不影響后續的sql語句分頁

?

coun=true,為開啟計數功能

六、配置參數

  • helperDialect:分頁插件會自動檢測當前的數據庫鏈接,自動選擇合適的分頁方式。 你可以配置helperDialect屬性來指定分頁插件使用哪種方言。配置時,可以使用下面的縮寫值: oracle,mysql,mariadb,sqlite,hsqldb,postgresql,db2,sqlserver,informix,h2,sqlserver2012,derby 特別注意:使用 SqlServer2012 數據庫時,需要手動指定為 sqlserver2012,否則會使用 SqlServer2005 的方式進行分頁。 你也可以實現 AbstractHelperDialect,然后配置該屬性為實現類的全限定名稱即可使用自定義的實現方法。

  • offsetAsPageNum:默認值為 false,該參數對使用 RowBounds 作為分頁參數時有效。 當該參數設置為 true 時,會將 RowBounds 中的 offset 參數當成 pageNum 使用,可以用頁碼和頁面大小兩個參數進行分頁。

  • rowBoundsWithCount:默認值為false,該參數對使用 RowBounds 作為分頁參數時有效。 當該參數設置為true時,使用 RowBounds 分頁會進行 count 查詢。

  • pageSizeZero:默認值為 false,當該參數設置為 true 時,如果 pageSize=0 或者 RowBounds.limit = 0 就會查詢出全部的結果(相當于沒有執行分頁查詢,但是返回結果仍然是 Page 類型)。

  • reasonable:分頁合理化參數,默認值為false。當該參數設置為 true 時,pageNum<=0 時會查詢第一頁, pageNum>pages(超過總數時),會查詢最后一頁。默認false 時,直接根據參數進行查詢。

  • params:為了支持startPage(Object params)方法,增加了該參數來配置參數映射,用于從對象中根據屬性名取值, 可以配置 pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默認值, 默認值為pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero=pageSizeZero。

  • supportMethodsArguments:支持通過 Mapper 接口參數來傳遞分頁參數,默認值false,分頁插件會從查詢方法的參數值中,自動根據上面 params 配置的字段中取值,查找到合適的值時就會自動分頁。 使用方法可以參考測試代碼中的 com.github.pagehelper.test.basic 包下的 ArgumentsMapTest 和 ArgumentsObjTest。

  • autoRuntimeDialect:默認值為 false。設置為 true 時,允許在運行時根據多數據源自動識別對應方言的分頁 (不支持自動選擇sqlserver2012,只能使用sqlserver),用法和注意事項參考下面的場景五

  • closeConn:默認值為 true。當使用運行時動態數據源或沒有設置 helperDialect 屬性自動獲取數據庫類型時,會自動獲取一個數據庫連接, 通過該屬性來設置是否關閉獲取的這個連接,默認true關閉,設置為 false 后,不會關閉獲取的連接,這個參數的設置要根據自己選擇的數據源來決定。

  • aggregateFunctions(5.1.5+):默認為所有常見數據庫的聚合函數,允許手動添加聚合函數(影響行數),所有以聚合函數開頭的函數,在進行 count 轉換時,會套一層。其他函數和列會被替換為 count(0),其中count列可以自己配置。

  • 總結

    以上是生活随笔為你收集整理的MyBatis之PageHelper分页操作的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。