国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

mybatis&Mysql分頁查詢,以及SQL_CALC_FOUND_ROWS與count(*) 性能對比

這篇具有很好參考價(jià)值的文章主要介紹了mybatis&Mysql分頁查詢,以及SQL_CALC_FOUND_ROWS與count(*) 性能對比。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

溫故而知新,這里記錄一下

一、引言

????????分頁查詢每個(gè)人程序猿幾乎都使用過,但是有部分同學(xué)不懂什么是物理分頁和邏輯分頁。

????????物理分頁:

????????相當(dāng)于執(zhí)行了limit分頁語句,返回部分?jǐn)?shù)據(jù)。物理分頁只返回部分?jǐn)?shù)據(jù)占用內(nèi)存小,能夠獲取數(shù)據(jù)庫最新的狀態(tài),實(shí)施性比較強(qiáng),一般適用于數(shù)據(jù)量比較大,數(shù)據(jù)更新比較頻繁的場景。

????????邏輯分頁:

????????一次性把全部的數(shù)據(jù)取出來,通過程序進(jìn)行篩選數(shù)據(jù)。如果數(shù)據(jù)量大的情況下會消耗大量的內(nèi)存,由于邏輯分頁只需要讀取數(shù)據(jù)庫一次,不能獲取數(shù)據(jù)庫最新狀態(tài),實(shí)施性比較差,適用于數(shù)據(jù)量小,數(shù)據(jù)穩(wěn)定的場合。

二、分頁處理方式

2.1、MybatisPageHelper組件

????????常用的分頁組件有MybatisPageHelper等,分頁原理為先執(zhí)行原SQL+limit語句,再執(zhí)行select count(*) from xxx where xxx語句。

????????一共執(zhí)行了兩次,進(jìn)行了兩次數(shù)據(jù)的篩選和過濾。

2.1.1、MybatisPlusConfig配置

創(chuàng)建MybatisPlusConfig配置類,需要配置分頁插件,小編使用的Spring boot配置方式。

/**
?* @Auther: IT賤男
?* @Date: 2019/6/12 15:06
?* @Description: MybatisPlus配置類
?*/
@Configuration
public class MyBatisPlusConfig {
?
? ? /**
? ? ?* 分頁插件
? ? ?* @return
? ? ?*/
? ? @Bean
? ? public PaginationInterceptor paginationInterceptor() {
? ? ? ? return new PaginationInterceptor();
? ? }
}


2.1.2、具體分頁實(shí)現(xiàn)

MP的Wrapper提供了兩種分頁查詢的方式,源碼如下:

 /**
? ? ?* 根據(jù) entity 條件,查詢?nèi)坑涗洠ú⒎摚?? ? ?*
? ? ?* @param page ? ? ? ? 分頁查詢條件(可以為 RowBounds.DEFAULT)
? ? ?* @param queryWrapper 實(shí)體對象封裝操作類(可以為 null)
? ? ?*/
? ? IPage<T> selectPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
?
? ? /**
? ? ?* 根據(jù) Wrapper 條件,查詢?nèi)坑涗洠ú⒎摚?? ? ?*
? ? ?* @param page ? ? ? ? 分頁查詢條件
? ? ?* @param queryWrapper 實(shí)體對象封裝操作類
? ? ?*/
? ? IPage<Map<String, Object>> selectMapsPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

可見兩個(gè)分頁方法參數(shù)都是一致的,只是返回參數(shù)略有不同,具體選擇根據(jù)實(shí)際業(yè)務(wù)為準(zhǔn)。

? /**
? ? ?* 分頁查詢
? ? ?*/
? ? @Test
? ? public void selectByPage() {
? ? ? ? QueryWrapper<User> wrapper = new QueryWrapper();
? ? ? ? wrapper.like("name", "雨").lt("age", 40);
?
? ? ? ? Page<User> page = new Page<>(1,2);
?
? ? ? ? //IPage<User> userIPage = userMapper.selectPage(page, wrapper);
?
? ? ? ? IPage<Map<String, Object>> mapIPage = userMapper.selectMapsPage(page, wrapper);
?
?
? ? ? ? System.out.println("總頁數(shù)"+mapIPage.getPages());
? ? ? ? System.out.println("總記錄數(shù)"+mapIPage.getTotal());
? ? ? ? List<Map<String, Object>> records = mapIPage.getRecords();
? ? ? ? records.forEach(System.out::println);
? ? }

以上分頁查詢執(zhí)行sql如下,先是查詢了一次總記錄數(shù),然后在查詢的數(shù)據(jù)。

DEBUG==> ?Preparing: SELECT COUNT(1) FROM user WHERE name LIKE ? AND age < ??
DEBUG==> Parameters: %雨%(String), 40(Integer)
TRACE<== ? ?Columns: COUNT(1)
TRACE<== ? ? ? ?Row: 2
DEBUG==> ?Preparing: SELECT id,name,age,email,manager_id,create_time FROM user WHERE name LIKE ? AND age < ? LIMIT ?,??
DEBUG==> Parameters: %雨%(String), 40(Integer), 0(Long), 2(Long)
TRACE<== ? ?Columns: id, name, age, email, manager_id, create_time
TRACE<== ? ? ? ?Row: 2, 張雨琪, 31, zjq@baomidou.com, 1088248166370832385, 2019-01-14 09:15:15
TRACE<== ? ? ? ?Row: 3, 劉紅雨, 31, lhm@baomidou.com, 1088248166370832385, 2019-01-14 09:48:16
DEBUG<== ? ? ?Total: 2
總頁數(shù)1
總記錄數(shù)2

可以看出,質(zhì)量量兩條查詢語句:文章來源地址http://www.zghlxwxcb.cn/news/detail-818164.html

  • SELECT COUNT(1) FROM user WHERE name LIKE ? AND age < ?
  • SELECT id,name,age,email,manager_id,create_time FROM user WHERE name LIKE ? AND age < ? LIMIT ?,?

2.2、PageHelper組件

2.2.1. 添加 Maven 依賴

1
2
3
4
5
6

到了這里,關(guān)于mybatis&Mysql分頁查詢,以及SQL_CALC_FOUND_ROWS與count(*) 性能對比的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Mybatis-Plus詳解(新建maven項(xiàng)目、查詢所有信息、打印SQL日志、實(shí)現(xiàn)CRUD(增刪改查)、分頁、條件查詢且分頁,前后端分離式開發(fā))

    Mybatis-Plus詳解(新建maven項(xiàng)目、查詢所有信息、打印SQL日志、實(shí)現(xiàn)CRUD(增刪改查)、分頁、條件查詢且分頁,前后端分離式開發(fā))

    MyBatis-Plus(opens new window) (簡稱MP) 是一個(gè)MyBatis(opens new window)的增強(qiáng)工具,在MyBatis的基礎(chǔ)上只做增強(qiáng)不做改變,為簡化開發(fā)、提高效率而生。想查看官網(wǎng)相關(guān)內(nèi)容的化我這里提供了官網(wǎng)地址:https://baomidou.com/ 無侵入:只做增強(qiáng)不做改變,引入它不會對現(xiàn)有工程產(chǎn)生影響,如絲般

    2024年02月04日
    瀏覽(22)
  • MySQL之子查詢、連接查詢(內(nèi)&外)以及分頁查詢

    MySQL之子查詢、連接查詢(內(nèi)&外)以及分頁查詢

    ????????09)查詢學(xué)過「張三」老師授課的同學(xué)的信息 ????????10)查詢沒有學(xué)全所有課程的同學(xué)的信息? ????????11)查詢沒學(xué)過\\\"張三\\\"老師講授的任一門課程的學(xué)生姓名 ????????12)查詢兩門及其以上不及格課程的同學(xué)的學(xué)號,姓名及其平均成績 ?????????

    2024年01月21日
    瀏覽(19)
  • MySQL之子查詢、連接查詢(內(nèi)&外)以及分頁查詢(實(shí)操)

    MySQL之子查詢、連接查詢(內(nèi)&外)以及分頁查詢(實(shí)操)

    續(xù)上篇博主MySQL之視圖索引執(zhí)行計(jì)劃這篇給大家講解MySQL之子查詢、連接查詢(內(nèi)外)以及分頁查詢 09)查詢學(xué)過「張三」老師授課的同學(xué)的信息 10)查詢沒有學(xué)全所有課程的同學(xué)的信息 分析:沒有學(xué)全,學(xué)全了有多少門,統(tǒng)計(jì)一共有多少門學(xué)科 統(tǒng)計(jì)每一個(gè)學(xué)生學(xué)了多少門 11)

    2024年01月23日
    瀏覽(15)
  • SQL Server、MySQL和Oracle數(shù)據(jù)庫分頁查詢的區(qū)別與聯(lián)系

    SQL Server、MySQL和Oracle數(shù)據(jù)庫分頁查詢的區(qū)別與聯(lián)系

    摘要:本文將通過一個(gè)現(xiàn)實(shí)例子,詳細(xì)解釋SQL Server、MySQL和Oracle這三種常見關(guān)系型數(shù)據(jù)庫在分頁查詢方面的區(qū)別與聯(lián)系。我們將提供具體場景下的SQL語句示例,并解釋每個(gè)數(shù)據(jù)庫的分頁查詢用法以及優(yōu)化方法,幫助讀者更好地選擇適合自己需求的分頁查詢方式。 假設(shè)我們有一

    2024年02月11日
    瀏覽(65)
  • MySQL-如何定位慢查詢SQL以及優(yōu)化

    MySQL-如何定位慢查詢SQL以及優(yōu)化

    定位慢SQL可以通過慢查詢?nèi)罩緛聿榭绰齋QL,默認(rèn)的情況下,MySQL數(shù)據(jù)庫不開啟慢查詢?nèi)罩?slow query log),需要手動把它打開 SET GLOBAL slow_query_log = ‘ON’; 查看下慢查詢?nèi)罩九渲?SHOW VARIABLES LIKE ‘slow_query_log%’ slow_query_log:表示慢查詢開啟的狀態(tài) slow_query_log_file:表示慢查詢?nèi)罩?/p>

    2024年02月08日
    瀏覽(19)
  • MyBatis之分頁查詢:MyBatis PageHelper

    MyBatis之分頁查詢:MyBatis PageHelper

    MyBatis,作為目前流行的ORM框架,大大方便了日常開發(fā)。而對于分頁查詢,雖然可以通過SQL的limit語句實(shí)現(xiàn),但是比較繁瑣。而MyBatis PageHelper的出現(xiàn),則解決了這一痛點(diǎn)。這里將介紹如何在Spring Boot、MyBatis的環(huán)境中通過MyBatis PageHelper高效方便的實(shí)現(xiàn)分頁查詢 添加Maven依賴 添加配

    2024年02月09日
    瀏覽(19)
  • Mybatis分頁查詢同時(shí)返回總數(shù)和數(shù)據(jù)

    我們在使用Mybatis分頁查詢數(shù)據(jù)列表時(shí),在用戶的一個(gè)請求中常常需要同時(shí)返回當(dāng)前頁的列表數(shù)據(jù)以及滿足條件的數(shù)據(jù)總條數(shù)用于分頁。 1)執(zhí)行兩次SQL,一次查列表,一次查總數(shù) ? ? ? 這種方法最簡單,也最容易實(shí)現(xiàn)。 2)分頁插件PageHelper ? ? ? 另一種常用的方式就是使用

    2024年02月14日
    瀏覽(26)
  • Mybatis分頁查詢——四種傳參方式

    目錄 相關(guān)導(dǎo)讀 一、順序傳參 1. 持久層接口方法 2. UserMapper.xml映射文件新增標(biāo)簽

    2024年02月02日
    瀏覽(24)
  • mybatis plus 分頁查詢出現(xiàn)count()

    出現(xiàn)問題現(xiàn)象 使用mybatisplus分頁時(shí)候count語句出錯(cuò),控制臺打印的sql為### The error may involve defaultParameterMap, The error occurred while setting parameters 查看打印的sql 不知道為啥不是count(*)而是count()導(dǎo)致分頁報(bào)錯(cuò) 出現(xiàn)問題的原因和解決辦法

    2024年02月15日
    瀏覽(21)
  • Mybatis映射.動態(tài)sql.分頁

    動態(tài)SQL是MyBatis提供的一種動態(tài)生成SQL語句的方式,可以根據(jù)不同的條件生成不同的SQL語句,從而實(shí)現(xiàn)更加靈活的查詢和操作。 在MyBatis的映射文件中,可以通過使用if、choose、when、otherwise、foreach等標(biāo)簽來實(shí)現(xiàn)動態(tài)SQL。下面以if和foreach為例,介紹如何在MyBatis映射文件中使用動

    2024年02月11日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包