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

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

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

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

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

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

調(diào)用方法

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

例如:

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

詳細(xì)server層代碼

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

代碼如下(示例):

    public ArchiveRecords query(ArchiveRecordsVo vo) {
        …………………………
        ArchiveRecords records = baseMapper.selectOne(queryWrapper);
        //查詢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;
    }

控制臺輸出:

代碼如下(示例):

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

注意:

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

SELECT COUNT(*) as importNo FROM archive FROM archive

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

注意:

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

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

錯誤日志:

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

錯誤代碼示例

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

問題分析

代碼看起來沒什么問題,是求出groupBy之后的數(shù)量,但是此時我們通過生成的sql可以看到:

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

這樣查詢出來的結(jié)果是多行數(shù)值:

在這里插入圖片描述

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

解決方案

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é)

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

相關(guān)文章

  • SSM?Mapper文件查詢出返回?cái)?shù)據(jù)查不到個別字段的問題

    SSM?Mapper文件查詢出返回?cái)?shù)據(jù)查不到個別字段的問題

    這篇文章主要介紹了SSM?Mapper文件查詢出返回?cái)?shù)據(jù)查不到個別字段的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 關(guān)于IDEA配置文件字符集的問題

    關(guān)于IDEA配置文件字符集的問題

    這篇文章主要介紹了關(guān)于IDEA配置文件字符集的問題,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • 關(guān)于springBoot yml文件的list讀取問題總結(jié)(親測)

    關(guān)于springBoot yml文件的list讀取問題總結(jié)(親測)

    這篇文章主要介紹了關(guān)于springBoot yml文件的list讀取問題總結(jié),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java中包裝類介紹與其注意事項(xiàng)

    Java中包裝類介紹與其注意事項(xiàng)

    Java語言是一個面向?qū)ο蟮恼Z言,但是Java中的基本數(shù)據(jù)類型卻是不面向?qū)ο蟮?,這在實(shí)際使用時存在很多的不便,所以在設(shè)計(jì)類時為每個基本數(shù)據(jù)類型設(shè)計(jì)了一個對應(yīng)的類進(jìn)行代表,這樣八個和基本數(shù)據(jù)類型對應(yīng)的類統(tǒng)稱為包裝類,有些地方也翻譯為外覆類或數(shù)據(jù)類型類。
    2017-02-02
  • mybatis xml注釋sql的注意事項(xiàng)及說明

    mybatis xml注釋sql的注意事項(xiàng)及說明

    這篇文章主要介紹了mybatis xml注釋sql的注意事項(xiàng)及說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java實(shí)現(xiàn)學(xué)生成績輸出到磁盤文件的方法詳解

    Java實(shí)現(xiàn)學(xué)生成績輸出到磁盤文件的方法詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用Java實(shí)現(xiàn)將學(xué)生成績輸出到磁盤文件的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-11-11
  • protobuf與json轉(zhuǎn)換小結(jié)

    protobuf與json轉(zhuǎn)換小結(jié)

    protobuf對象不能直接使用jsonlib去轉(zhuǎn),因?yàn)閜rotobuf生成的對象的get方法返回的類型有byte[],而只有String類型可以作為json的key,protobuf提供方法進(jìn)行轉(zhuǎn)換
    2017-07-07
  • spring?boot自帶的page分頁問題

    spring?boot自帶的page分頁問題

    這篇文章主要介紹了spring?boot自帶的page分頁問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 關(guān)于JAVA 數(shù)組的使用介紹

    關(guān)于JAVA 數(shù)組的使用介紹

    本篇文章小編將為大家介紹,關(guān)于JAVA 數(shù)組的使用介紹,有需要的朋友可以參考一下
    2013-04-04
  • C語言實(shí)現(xiàn)矩陣運(yùn)算案例詳解

    C語言實(shí)現(xiàn)矩陣運(yùn)算案例詳解

    這篇文章主要介紹了C語言實(shí)現(xiàn)矩陣運(yùn)算案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08

最新評論

云龙县| 萨迦县| 九寨沟县| 多伦县| 平湖市| 原阳县| 平武县| 罗田县| 长兴县| 丰台区| 斗六市| 阿瓦提县| 句容市| 库尔勒市| 德江县| 高淳县| 岐山县| 自治县| 阳新县| 寻甸| 普安县| 绥化市| 和平区| 三门峡市| 固安县| 桓台县| 金溪县| 平泉县| 兰考县| 葫芦岛市| 乐至县| 扎鲁特旗| 大埔县| 建昌县| 临邑县| 台湾省| 拉孜县| 凤山市| 中西区| 许昌市| 松潘县|