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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

分页插件PageHelper配置步骤(mybatis)

發(fā)布時(shí)間:2025/3/15 编程问答 9 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分页插件PageHelper配置步骤(mybatis) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原理:

mybatis執(zhí)行sql步驟:?

通過(guò)sqlsessionFactory??sqlsession?Exector ?(執(zhí)行器對(duì)象)mappedstatement(sql語(yǔ)句封裝)

在執(zhí)行mappedstatement前在sql語(yǔ)句上加上limit即可實(shí)現(xiàn)分頁(yè)

步驟:

一、引入pageHelper的jar包

二、在mybatis的xml文件中配置分頁(yè)插件

<!-- plugins在配置文件中的位置必須符合要求,否則會(huì)報(bào)錯(cuò),順序如下:properties?, settings?, typeAliases?, typeHandlers?, objectFactory?,objectWrapperFactory?, plugins?, environments?, databaseIdProvider?, mappers? --> <plugins><!-- com.github.pagehelper為PageHelper類(lèi)所在包名 --><plugin interceptor="com.github.pagehelper.PageHelper"><property name="dialect" value="mysql"/><!-- 該參數(shù)默認(rèn)為false --><!-- 設(shè)置為true時(shí),會(huì)將RowBounds第一個(gè)參數(shù)offset當(dāng)成pageNum頁(yè)碼使用 --><!-- 和startPage中的pageNum效果一樣--><property name="offsetAsPageNum" value="true"/><!-- 該參數(shù)默認(rèn)為false --><!-- 設(shè)置為true時(shí),使用RowBounds分頁(yè)會(huì)進(jìn)行count查詢 --><property name="rowBoundsWithCount" value="true"/><!-- 設(shè)置為true時(shí),如果pageSize=0或者RowBounds.limit = 0就會(huì)查詢出全部的結(jié)果 --><!-- (相當(dāng)于沒(méi)有執(zhí)行分頁(yè)查詢,但是返回結(jié)果仍然是Page類(lèi)型)--><property name="pageSizeZero" value="true"/><!-- 3.3.0版本可用 - 分頁(yè)參數(shù)合理化,默認(rèn)false禁用 --><!-- 啟用合理化時(shí),如果pageNum<1會(huì)查詢第一頁(yè),如果pageNum>pages會(huì)查詢最后一頁(yè) --><!-- 禁用合理化時(shí),如果pageNum<1或pageNum>pages會(huì)返回空數(shù)據(jù) --><property name="reasonable" value="true"/></plugin> </plugins>

這里的com.github.pagehelper.PageHelper使用完整的類(lèi)路徑。

其他五個(gè)參數(shù)說(shuō)明:

  • 增加dialect屬性,使用時(shí)必須指定該屬性,可選值為oracle,mysql,mariadb,sqlite,hsqldb,postgresql,沒(méi)有默認(rèn)值,必須指定該屬性
  • 增加offsetAsPageNum屬性,默認(rèn)值為false,使用默認(rèn)值時(shí)不需要增加該配置,需要設(shè)為true時(shí),需要配置該參數(shù)。當(dāng)該參數(shù)設(shè)置為true時(shí),使用RowBounds分頁(yè)時(shí),會(huì)將offset參數(shù)當(dāng)成pageNum使用,可以用頁(yè)碼和頁(yè)面大小兩個(gè)參數(shù)進(jìn)行分頁(yè)。
  • 增加rowBoundsWithCount屬性,默認(rèn)值為false,使用默認(rèn)值時(shí)不需要增加該配置,需要設(shè)為true時(shí),需要配置該參數(shù)。當(dāng)該參數(shù)設(shè)置為true時(shí),使用RowBounds分頁(yè)會(huì)進(jìn)行count查詢。
  • 增加pageSizeZero屬性,默認(rèn)值為false,使用默認(rèn)值時(shí)不需要增加該配置,需要設(shè)為true時(shí),需要配置該參數(shù)。當(dāng)該參數(shù)設(shè)置為true時(shí),如果pageSize=0或者RowBounds.limit = 0就會(huì)查詢出全部的結(jié)果(相當(dāng)于沒(méi)有執(zhí)行分頁(yè)查詢,但是返回結(jié)果仍然是Page類(lèi)型)。
  • 增加reasonable屬性,默認(rèn)值為false,使用默認(rèn)值時(shí)不需要增加該配置,需要設(shè)為true時(shí),需要配置該參數(shù)。具體作用請(qǐng)看上面配置文件中的注釋內(nèi)容。
  • 也可以在spring的xml文件中配置

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><property name="mapperLocations"><array><value>classpath:mapper/*.xml</value></array></property><property name="typeAliasesPackage" value="com.isea533.ssm.model"/><property name="plugins"><array><bean class="com.github.pagehelper.PageHelper"><property name="properties"><value>dialect=hsqldbreasonable=true</value></property></bean></array></property> </bean>

    ?三、配置完成后再調(diào)用類(lèi)中配置分頁(yè)屬性:

    ? ?步驟:?只需將查詢的條件放入PageInfo中,設(shè)置分頁(yè)屬性即可

    //查詢所需數(shù)據(jù)條件List<TbItem> list = ibItemMapper.selectByExample(new TbItemExample());//設(shè)置分頁(yè)信息(第幾頁(yè),每頁(yè)數(shù)量)PageHelper.startPage(pageNum, pageSize);//取記錄總條數(shù)PageInfo<TbItem> pageInfo = new PageInfo<>(list); long sum = pageInfo.getTotal();

    ?? ? ? ?

    ???原理:?執(zhí)行自定義( 例如 :ibItemMapper.selectByExample(new TbItemExample())) 查詢語(yǔ)句時(shí),

    ? ? ? ? ? ? ? ?會(huì)在mappedstatement執(zhí)行前將分頁(yè)的sql語(yǔ)句追加到查詢語(yǔ)句后。

    ?

    page的一些屬性: ? ?page.getPageNum();page.getPageSize();page.getStartRow();page.getEndRow(); page.getTotal();page.getPages();page.getFirstPage();page.getLastPage();page.isFirstPage();page.isLastPage();page.isHasPreviousPage();page.isHasNextPage();

    ?

    注意事項(xiàng):

    • PageHelper.startPage方法后的一個(gè)個(gè)查詢方法才會(huì)被分頁(yè)。

    • 不支持帶有for update的語(yǔ)句分頁(yè)。
    • 不支持關(guān)聯(lián)結(jié)果查詢。

    總結(jié)

    以上是生活随笔為你收集整理的分页插件PageHelper配置步骤(mybatis)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。