欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MybatisPlus如何調(diào)用count函數(shù)

 更新時(shí)間:2023年08月12日 16:51:35   作者:做軟件開(kāi)發(fā)的小鋒  
這篇文章主要介紹了MybatisPlus如何調(diào)用count函數(shù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

MybatisPlus調(diào)用count函數(shù)

項(xiàng)目整合了mybatisPlus時(shí),可以使用count函數(shù)做一些簡(jiǎn)單的統(tǒng)計(jì)

項(xiàng)目中遇到一個(gè)記錄統(tǒng)計(jì),由于項(xiàng)目整合過(guò)mybatisPlus,就不通過(guò)mybatis去寫(xiě)sql做查詢(xún),可通過(guò)QueryWrapper方法直接進(jìn)行查詢(xún)

調(diào)用方法

用mybatisPlus使用count聚合函數(shù)時(shí),直接調(diào)用.select方法即可,

例如:

csArchiveQueryWrapper.select("COUNT(*) as importNo");

詳細(xì)server層代碼

這里我們通過(guò) QueryWrapper.select() 進(jìn)行查詢(xún),在傳入getMap方法,定義map接收,最后取出我們需要的 importNo 即可,由于在實(shí)體類(lèi)中定義的類(lèi)型為 Integer,所以做了類(lèi)型轉(zhuǎn)換

代碼如下(示例):

    public ArchiveRecords query(ArchiveRecordsVo vo) {
        …………………………
        ArchiveRecords records = baseMapper.selectOne(queryWrapper);
        //查詢(xún)archive表中檔案總條數(shù)
        QueryWrapper<Archive> ArchiveQueryWrapper= new QueryWrapper<>();
        ArchiveQueryWrapper.select("COUNT(*) as importNo");
        Map<String , Object> map = archiveService.getMap(ArchiveQueryWrapper);
        System.out.println("==============>map:" + map);
        Integer No = Integer.valueOf(String.valueOf(map.get("importNo")));
        System.out.println("--------------->取出map中importNo:" + No);
        System.out.println("--------------->取出map中importNo:" + No);
        System.out.println("--------------->取出map中importNo:" + No);
        records1.setImportNo(No);
        System.out.println("--------------->set后新總條數(shù):" + records.getImportNo());
        System.out.println("--------------->set后新總條數(shù):" + records.getImportNo());
        System.out.println("--------------->set后新總條數(shù):" + records.getImportNo());
        return records;
    }

控制臺(tái)輸出:

代碼如下(示例):

==============>map:{importNo=5}
--------------->取出map中importNo:5
--------------->取出map中importNo:5
--------------->取出map中importNo:5
--------------->set后新總條數(shù):5
--------------->set后新總條數(shù):5
--------------->set后新總條數(shù):5

注意:

在select()中自定義的sql語(yǔ)句,不需要加 from table_name,它會(huì)自動(dòng)拼接,若自己加了,則會(huì)出現(xiàn)報(bào)錯(cuò),拼接的sql語(yǔ)句將會(huì)變?yōu)椋?/p>

SELECT COUNT(*) as importNo FROM archive FROM archive

sql會(huì)多拼接一個(gè) from table_name 這里需要注意一下,需要where條件可通過(guò) QueryWrapper.eq() 等方法實(shí)現(xiàn),可根據(jù)實(shí)際需求自行選擇

注意:

通過(guò)mybatisPlus的方法,可以快速的實(shí)現(xiàn)某些方法,不用寫(xiě)xml,做層層調(diào)用,非常好用。

mybatisplus:Count()方法和groupBy組合使用的報(bào)錯(cuò)

錯(cuò)誤日志:

java org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2

錯(cuò)誤代碼示例

int studentNum = studentLackDealService.count(
new LambdaQueryWrapper<StudentLackDeal>().eq(StudentLackDeal::getBatchId, batchId)
.groupBy(StudentLackDeal::getAdmissionTicket));

問(wèn)題分析

代碼看起來(lái)沒(méi)什么問(wèn)題,是求出groupBy之后的數(shù)量,但是此時(shí)我們通過(guò)生成的sql可以看到:

SELECT
	COUNT(*)
FROM
	exam_student_lack_deal 
WHERE
	del_flag = 0 
	AND ( batch_id = XXX ) 

這樣查詢(xún)出來(lái)的結(jié)果是多行數(shù)值:

在這里插入圖片描述

而mybatis-plus的Count()方法用的是int接收,返回的確是一個(gè)list,自然而然就會(huì)報(bào)錯(cuò)了

解決方案

1. 使用 list() 接收處理,.size()獲取數(shù)量

int studentNum = studentLackDealService.list(
   new LambdaQueryWrapper<StudentLackDeal>().eq(StudentLackDeal::getBatchId, batchId)  .groupBy(StudentLackDeal::getAdmissionTicket)).size();

2.去除groupBy 使用DISTINCT關(guān)鍵字去重

int studentNum = studentLackDealService.count(
            new QueryWrapper<StudentLackDeal>().select("DISTINCT admission_ticket").lambda().eq(StudentLackDeal::getBatchId, batchId));

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java開(kāi)發(fā)中如何使用JVisualVM進(jìn)行性能分析

    java開(kāi)發(fā)中如何使用JVisualVM進(jìn)行性能分析

    JVisualVM是由Sun提供的性能分析工具,如此強(qiáng)大的后盾怎能不強(qiáng)大?在Jdk6.0以后的版本中是自帶的,配置好環(huán)境變量然后在運(yùn)行中輸入“JVisualVm”或直接到Jdk的安裝目錄的Bin目錄下找到運(yùn)行程序即可運(yùn)行。如果是用Jdk1.5或以前版本的朋友就得要單獨(dú)安裝了
    2015-12-12
  • 使用IDEA創(chuàng)建maven父子工程項(xiàng)目 (圖文)

    使用IDEA創(chuàng)建maven父子工程項(xiàng)目 (圖文)

    本文主要介紹了使用IDEA創(chuàng)建maven父子工程項(xiàng)目,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • 詳解如何使用tldb數(shù)據(jù)庫(kù)的java客戶(hù)端

    詳解如何使用tldb數(shù)據(jù)庫(kù)的java客戶(hù)端

    這篇文章主要為大家介紹了如何使用tldb數(shù)據(jù)庫(kù)的java客戶(hù)端過(guò)程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • 了解Java線程池執(zhí)行原理

    了解Java線程池執(zhí)行原理

    那么有沒(méi)有一種辦法使得線程可以復(fù)用,就是執(zhí)行完一個(gè)任務(wù),并不被銷(xiāo)毀,而是可以繼續(xù)執(zhí)行其他的任務(wù)?在Java中可以通過(guò)線程池來(lái)達(dá)到這樣的效果。下面我們來(lái)詳細(xì)了解一下吧
    2019-05-05
  • 在IDEA中 實(shí)現(xiàn)給main方法附帶參數(shù)的操作

    在IDEA中 實(shí)現(xiàn)給main方法附帶參數(shù)的操作

    這篇文章主要介紹了在IDEA中 實(shí)現(xiàn)給main方法附帶參數(shù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • SpringBoot使用Redis Stream實(shí)現(xiàn)輕量消息隊(duì)列的示例代碼

    SpringBoot使用Redis Stream實(shí)現(xiàn)輕量消息隊(duì)列的示例代碼

    Redis Stream 是 Redis 5.0 引入的一種數(shù)據(jù)結(jié)構(gòu),用于處理日志類(lèi)型的數(shù)據(jù),它提供了高效、可靠的方式來(lái)處理和存儲(chǔ)時(shí)間序列數(shù)據(jù),如事件、消息等,本文介紹了SpringBoot使用Redis Stream實(shí)現(xiàn)輕量消息隊(duì)列,需要的朋友可以參考下
    2024-08-08
  • java模擬http請(qǐng)求的錯(cuò)誤問(wèn)題整理

    java模擬http請(qǐng)求的錯(cuò)誤問(wèn)題整理

    本文是小編給大家整理的在用java模擬http請(qǐng)求的時(shí)候遇到的錯(cuò)誤問(wèn)題整理,以及相關(guān)分析,有興趣的朋友參考下。
    2018-05-05
  • Java職責(zé)鏈模式的深入了解

    Java職責(zé)鏈模式的深入了解

    這篇文章主要為大家介紹了Java職責(zé)鏈模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • Mybatis?ResultMap和分頁(yè)操作示例詳解

    Mybatis?ResultMap和分頁(yè)操作示例詳解

    這篇文章主要為大家介紹了Mybatis?ResultMap和分頁(yè)操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Mybatis-plus使用selectList查詢(xún)數(shù)據(jù)為null的問(wèn)題及解決辦法

    Mybatis-plus使用selectList查詢(xún)數(shù)據(jù)為null的問(wèn)題及解決辦法

    這篇文章主要介紹了Mybatis-plus使用selectList查詢(xún)數(shù)據(jù)為null的問(wèn)題及解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07

最新評(píng)論