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

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

生活随笔

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

编程问答

MyBatis Plus——分页插件

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

官方文檔

https://mp.baomidou.com/guide/page.html?

示例工程

👉?mybatis-plus-sample-pagination

Spring XML?方式?

<!-- spring xml 方式 --> <property name="plugins"><array><bean class="com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor"><property name="sqlParser" ref="自定義解析類(lèi)、可以沒(méi)有"/><property name="dialectClazz" value="自定義方言類(lèi)、可以沒(méi)有"/><!-- COUNT SQL 解析.可以沒(méi)有 --><property name="countSqlParser" ref="countSqlParser"/></bean></array> </property><bean id="countSqlParser" class="com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize"><!-- 設(shè)置為 true 可以?xún)?yōu)化部分 left join 的sql --><property name="optimizeJoin" value="true"/> </bean>

Spring Boot方式?

//Spring boot方式 @EnableTransactionManagement @Configuration @MapperScan("com.baomidou.cloud.service.*.mapper*") public class MybatisPlusConfig {@Beanpublic PaginationInterceptor paginationInterceptor() {PaginationInterceptor paginationInterceptor = new PaginationInterceptor();// 設(shè)置請(qǐng)求的頁(yè)面大于最大頁(yè)后操作, true調(diào)回到首頁(yè),false 繼續(xù)請(qǐng)求 默認(rèn)false// paginationInterceptor.setOverflow(false);// 設(shè)置最大單頁(yè)限制數(shù)量,默認(rèn) 500 條,-1 不受限制// paginationInterceptor.setLimit(500);// 開(kāi)啟 count 的 join 優(yōu)化,只針對(duì)部分 left joinpaginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));return paginationInterceptor;} }

XML 自定義分頁(yè)

  • UserMapper.java 方法內(nèi)容
public interface UserMapper {//可以繼承或者不繼承BaseMapper/*** <p>* 查詢(xún) : 根據(jù)state狀態(tài)查詢(xún)用戶(hù)列表,分頁(yè)顯示* </p>** @param page 分頁(yè)對(duì)象,xml中可以從里面進(jìn)行取值,傳遞參數(shù) Page 即自動(dòng)分頁(yè),必須放在第一位(你可以繼承Page實(shí)現(xiàn)自己的分頁(yè)對(duì)象)* @param state 狀態(tài)* @return 分頁(yè)對(duì)象*/IPage<User> selectPageVo(Page<?> page, Integer state); }
  • UserMapper.xml 等同于編寫(xiě)一個(gè)普通 list 查詢(xún),mybatis-plus 自動(dòng)替你分頁(yè)
<select id="selectPageVo" resultType="com.baomidou.cloud.entity.UserVo">SELECT id,name FROM user WHERE state=#{state} </select>
  • UserServiceImpl.java 調(diào)用分頁(yè)方法
public IPage<User> selectUserPage(Page<User> page, Integer state) {// 不進(jìn)行 count sql 優(yōu)化,解決 MP 無(wú)法自動(dòng)優(yōu)化 SQL 問(wèn)題,這時(shí)候你需要自己查詢(xún) count 部分// page.setOptimizeCountSql(false);// 當(dāng) total 為小于 0 或者設(shè)置 setSearchCount(false) 分頁(yè)插件不會(huì)進(jìn)行 count 查詢(xún)// 要點(diǎn)!! 分頁(yè)返回的對(duì)象與傳入的對(duì)象是同一個(gè)return userMapper.selectPageVo(page, state); }

DEMO

啟用分頁(yè)插件和啟用樂(lè)觀鎖插件都是通過(guò)注冊(cè)一個(gè)Bean完成

1、啟用分頁(yè)插件

@Bean public PaginationInterceptor paginationInterceptor(){return new PaginationInterceptor(); }

2、測(cè)試分頁(yè)查詢(xún)

@Test public void testSelectPage(){//構(gòu)建分頁(yè)條件第二頁(yè)每頁(yè)顯示3條Page<User> page=new Page<>(2,3);//使用分頁(yè)條件查詢(xún),不使用其他條件userMapper.selectPage(page, null);//獲取分頁(yè)后查詢(xún)出的記錄List<User> records = page.getRecords();records.forEach(System.out::println);System.out.println("是否有下一頁(yè):"+page.hasNext());System.out.println("是否有上一頁(yè):"+page.hasPrevious());System.out.println("總記錄數(shù):"+page.getTotal()); }

?

參考文章

https://www.jianshu.com/p/18f5c5881653?

與50位技術(shù)專(zhuān)家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖

總結(jié)

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

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