最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入了解MyBatis分頁機制

 更新時間:2023年12月25日 08:23:53   作者:小威要向諸佬學習呀  
在企業(yè)項目的數(shù)據(jù)庫操作中,分頁查詢是一個常見需求,尤其當數(shù)據(jù)量龐大時,MyBatis作為我們Java開發(fā)者的持久層框架,為分頁提供了靈活的支持,本篇文章我們將深入探討MyBatis的分頁機制,使我們在實際開發(fā)項目中運用自如,需要的朋友可以參考下

MyBatis分頁原理

在講解mybatis的分頁原理之前,我們先來看一下:內(nèi)存分頁 vs. 數(shù)據(jù)庫分頁

  • 內(nèi)存分頁:查詢數(shù)據(jù)庫獲取全部數(shù)據(jù),然后在內(nèi)存中進行分頁。這種方式簡單但效率低下,當數(shù)據(jù)量巨大時可能導致內(nèi)存溢出。
  • 數(shù)據(jù)庫分頁:利用數(shù)據(jù)庫的分頁功能(比如 MySQL 的 LIMIT 和 OFFSET),僅查詢當前頁的數(shù)據(jù)。這種方式效率高,但需要編寫特定的 SQL。

現(xiàn)在我們再具體講MyBatis 的分頁方式。

MyBatis 支持兩種分頁方式:物理分頁和內(nèi)存分頁。但是在實際應用中,博主比較推薦使用物理分頁。

  • 物理分頁:通過特定的 SQL 實現(xiàn),依賴數(shù)據(jù)庫的分頁功能。
  • 內(nèi)存分頁:雖然 MyBatis 支持,但不推薦在大數(shù)據(jù)量場景下使用。

MyBatis 分頁插件

為了實現(xiàn)物理分頁,MyBatis 提供了分頁插件,如 PageHelper。這些插件可以自動修改原始 SQL,添加分頁相關(guān)的語句。

如何使用 MyBatis 分頁插件

接下來我們講解一下如何使用 MyBatis 分頁插件 。

首先第一步肯定是引入依賴

先創(chuàng)建一個 Maven 項目,引入 PageHelper 依賴:

<dependency>  
    <groupId>com.github.pagehelper</groupId>  
    <artifactId>pagehelper-spring-boot-starter</artifactId>   
</dependency>

然后配置 PageHelper

在 MyBatis 的配置文件(如 mybatis-config.xml)中,添加插件配置:

<plugins>  
    <plugin interceptor="com.github.pagehelper.PageInterceptor">  
        <property name="dialect" value="mysql"/> <!-- 根據(jù)實際數(shù)據(jù)庫選擇方言 -->  
        <property name="reasonable" value="true"/> <!-- 支持接口參數(shù)中的 pageNum 和 pageSize 為 0 時使用默認值 -->  
        <property name="supportMethodsArguments" value="true"/> <!-- 支持通過 Mapper 接口參數(shù)來傳遞分頁參數(shù) -->  
        <property name="params" value="count(countSql)"/> <!-- count 查詢的 SQL 參數(shù) -->  
    </plugin>  
</plugins>

最后使用 PageHelper

在 Mapper 接口或 Service 層使用 PageHelper:

// 在查詢之前設置分頁參數(shù)  
PageHelper.startPage(pageNum, pageSize);  
List<User> users = userMapper.selectByExample(example);  
// 使用 PageInfo 包裝查詢結(jié)果,獲取分頁信息  
PageInfo<User> pageInfo = new PageInfo<>(users, pageSize);

以博主之前做過的課設項目為例:

我們手上現(xiàn)在有一個UserMapper接口,用來查詢用戶數(shù)據(jù):

public interface UserMapper {  
    List<User> selectAllUsers();  
}

在Service層或Controller層中,我們這時候可以使用PageHelper來實現(xiàn)分頁:

@Service  
public class UserService {  
    @Autowired  
    private UserMapper userMapper;  
      
    public PageInfo<User> getUsers(int pageNum, int pageSize) {  
        PageHelper.startPage(pageNum, pageSize);  // 啟動分頁  
        List<User> users = userMapper.selectAllUsers();  // 查詢用戶數(shù)據(jù)  
        return new PageInfo<>(users);  // 使用PageInfo包裝查詢結(jié)果,獲取分頁信息  
    }  
}

當調(diào)用getUsers方法時,PageHelper會自動為selectAllUsers方法中的SQL添加分頁語句,從而只查詢當前頁的數(shù)據(jù)。

前端可以根據(jù)返回的PageInfo對象獲取當前頁的數(shù)據(jù)、總頁數(shù)、總記錄數(shù)等信息,并進行相應的展示。

文章到這里就先結(jié)束了,后續(xù)會繼續(xù)分享相關(guān)的知識點。

以上就是深入了解MyBatis分頁機制的詳細內(nèi)容,更多關(guān)于MyBatis分頁機制的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 微信隨機生成紅包金額算法java版

    微信隨機生成紅包金額算法java版

    這篇文章主要為大家詳細介紹了java和php版的微信隨機生成紅包金額算法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-07-07
  • Spring Boot攔截器實現(xiàn)步驟及測試實例

    Spring Boot攔截器實現(xiàn)步驟及測試實例

    這篇文章主要介紹了Spring Boot攔截器實現(xiàn)步驟及測試實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • 詳解Servlet 3.0/3.1 中的異步處理

    詳解Servlet 3.0/3.1 中的異步處理

    這篇文章主要介紹了詳解Servlet 3.0/3.1 中的異步處理,實例分析了servlet 3.0異步處理的技巧,非常具有實用價值,需要的朋友可以參考下
    2017-04-04
  • java8 集合 多字段 分組 統(tǒng)計個數(shù)代碼

    java8 集合 多字段 分組 統(tǒng)計個數(shù)代碼

    這篇文章主要介紹了java8 集合 多字段 分組 統(tǒng)計個數(shù)代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Logback日志基礎(chǔ)及自定義配置代碼實例

    Logback日志基礎(chǔ)及自定義配置代碼實例

    這篇文章主要介紹了Logback日志基礎(chǔ)及自定義配置代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • Spring?Security?登錄時添加圖形驗證碼實現(xiàn)實例

    Spring?Security?登錄時添加圖形驗證碼實現(xiàn)實例

    這篇文章主要為大家介紹了Spring?Security?登錄時添加圖形驗證碼實現(xiàn)實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • Jpa數(shù)據(jù)操作以及@Query和@Modifying注解使用方式

    Jpa數(shù)據(jù)操作以及@Query和@Modifying注解使用方式

    這篇文章主要介紹了Jpa數(shù)據(jù)操作以及@Query和@Modifying注解使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • spring快速入門實例教程

    spring快速入門實例教程

    這篇文章主要介紹了spring快速入門實例,主要分析了spring的基本配置與控制反轉(zhuǎn),對于spring的學習具有一定的參考借鑒價值,需要的朋友可以參考下
    2014-12-12
  • 使用controller傳boolean形式值

    使用controller傳boolean形式值

    這篇文章主要介紹了使用controller傳boolean形式值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java 兩種延時thread和timer詳解及實例代碼

    Java 兩種延時thread和timer詳解及實例代碼

    這篇文章主要介紹了Java 兩種延時thread和timer詳解及實例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02

最新評論

通江县| 张家港市| 满洲里市| 岳池县| 庄浪县| 永安市| 鹿邑县| 荔浦县| 西昌市| 湖北省| 东明县| 新民市| 阜新| 基隆市| 巢湖市| 磐安县| 连江县| 永泰县| 齐齐哈尔市| 社旗县| 临汾市| 申扎县| 武宣县| 盘锦市| 五家渠市| 峡江县| 莱芜市| 峨山| 广丰县| 西宁市| 湖北省| 洮南市| 北辰区| 长乐市| 自贡市| 广灵县| 绩溪县| 那曲县| 巨鹿县| 遂川县| 茌平县|