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

mybatis-plus查詢無數(shù)據(jù)問題及解決

 更新時間:2022年12月06日 09:04:20   作者:陽光coding  
這篇文章主要介紹了mybatis-plus查詢無數(shù)據(jù)問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

mybatis-plus查詢無數(shù)據(jù)

由于本周工作原因,spring系列放到下周寫,今天分享一個實際開發(fā)中出現(xiàn)的問題和解決辦法。

先說說背景

事情是這樣的,我們上線了一個繳費系統(tǒng),但是一到高峰繳費,就會出現(xiàn)通過手機(jī)號查詢不到個人的繳費信息。只要重啟,能好那么一下,然后隔一段時間,就又不行了。而且這塊還發(fā)現(xiàn)一點奇怪的規(guī)律,比如查詢某個號碼的,發(fā)現(xiàn)是點了9次之后,才會出現(xiàn),之后便會一直這樣。

使用的技術(shù)是springboot+spring mvc+mybatis-plus,數(shù)據(jù)庫是sqlserver(查的別人的庫)

ps:由于事情過去一段時間了,當(dāng)時忘了截圖,這里可能是純文字描述,請見諒。

然后最開始根據(jù)經(jīng)驗做了幾個判斷

1、是不是mybatis-plus的bug,連sqlserver有問題?

2、是不是mybatis-plus的緩存問題,從緩存中取數(shù)據(jù)取不到?

3、是不是并發(fā)太大,導(dǎo)致數(shù)據(jù)庫拒絕連接,或者連接超時了?

根據(jù)以上3點開始排查 

1、debug mybatis源碼,發(fā)現(xiàn)沒問題,pass。

2、將緩存設(shè)置去掉,不啟用緩存,發(fā)現(xiàn)還會出問題,不是這個問題

3、如果是超時,應(yīng)該是有日志,但是日志是沒有的,也不是這個問題,而且放到本地,調(diào)高并發(fā)量測試,也是沒有問題的。

來來回回搞了好久,都不行。最后沒辦法,把日志級別調(diào)到trace,開啟打印sql語句,看看是不是sql語句搞的鬼,果不其然,發(fā)現(xiàn)一些問題。

sql語句最開始是都正常的,但是當(dāng)查詢不到數(shù)據(jù)的時候,sql語句最后被拼接上了分頁,而且查的10行到20行的數(shù)據(jù)(為什么剛好查詢的是10行到20行?最開始我提到了”比如查詢某個號碼的,發(fā)現(xiàn)是點了9次之后,才會出現(xiàn),之后便會一直這樣“),所以查不到。但是為啥點擊第2-8次的時候,不出現(xiàn),我也沒搞明白,有清楚的還請告知一下。

幾經(jīng)周折發(fā)現(xiàn),mybatis配置了這么一項:

注意畫紅框地方,這個就是打開localpage模式。

supportMethodsArguments 這個值默認(rèn)是false,被設(shè)置了true,因此mybatis會自動拼接自動分頁。

把這個改成false或者直接去掉,就好了。完美解決。

當(dāng)然啦,大家一般都不會設(shè)置這個參數(shù),這里只是給大家做一個參考。

mybatis-plus查詢操作

一、查詢

1.1、普通查詢

    /**
     * 普通查詢
     */
    @Test
    public void selectById() {
        User user = userMapper.selectById(1412963147760857089L);
        System.out.println(user);
    }

查詢結(jié)果:

1.2、通過多個ID批量查詢

   //多個id批量查詢
    @Test
    public void testSelectByIds(){
        List<User> users = userMapper.selectBatchIds(Arrays.asList(1412963147760857089L,1413086639927959553L,1413087102014337026L));
        System.out.println(users);
    }

查詢結(jié)果

1.3、簡單條件查詢

    //簡單條件查詢
    @Test
    public void selectSimpleTerm(){
        Map<String,Object> columnMap = new HashMap<>();
        columnMap.put("name","lucyYY");
        columnMap.put("age",20);
        List<User> users = userMapper.selectByMap(columnMap);
        System.out.println(users);
    }

查詢結(jié)果

二、分頁

2.1、分頁插件

MyBatis Plus自帶分頁插件,只要簡單的配置即可實現(xiàn)分頁功能。

2.2、添加分頁插件

配置類中添加@Bean配置:

    /**
     * 分頁查詢插件
     */
    @Bean
    public PaginationInterceptor paginationInterceptor(){
        return new PaginationInterceptor();
    }

2.3、測試selectPage分頁

通過page對象獲取相關(guān)數(shù)據(jù):

    //分頁查詢
    @Test
    public void testSelectPage(){
        Page<User> page = new Page(2,3);
        Page<User> userPage = userMapper.selectPage(page, null);
        //返回對象得到的分頁數(shù)據(jù)
        long pages = userPage.getPages(); //總頁數(shù)
        long current = userPage.getCurrent();//當(dāng)前頁
        List<User> records = userPage.getRecords();//查詢到的分頁數(shù)據(jù)
        long total = userPage.getTotal();//總記錄數(shù)
        boolean hasNext = userPage.hasNext();//是否還存在上一分頁
        boolean hasPrevious = userPage.hasPrevious();//是否還存在下一分頁
        System.out.println(pages);
        System.out.println(current);
        System.out.println(records);
        System.out.println(total);
        System.out.println(hasNext);
        System.out.println(hasPrevious);
    }

查詢結(jié)果

2.4、測試selectMapPage分頁

當(dāng)指定了特定的查詢列時,希望分頁結(jié)果列表只返回被查詢的列,而不是很多null值。這時就可以測試selectMapsPage分頁:結(jié)果集是Map。

    //根據(jù)特定條件查詢結(jié)果
    @Test
    public void testSelectMapPage(){

        Page<Map<String,Object>> page = new Page<>(1,5);
        Page<Map<String,Object>> pageParam = userMapper.selectMapsPage(page,null);
        List<Map<String,Object>> records = pageParam.getRecords();
        records.forEach(System.out::println);
        System.out.println(pageParam.getCurrent());
        System.out.println(pageParam.getPages());
        System.out.println(pageParam.getSize());
        System.out.println(pageParam.getTotal());
        System.out.println(pageParam.hasNext());
        System.out.println(pageParam.hasPrevious());
    }

查詢結(jié)果

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

相關(guān)文章

  • Spring Boot自動注入的原理分析

    Spring Boot自動注入的原理分析

    這篇文章主要給大家分析介紹了關(guān)于Spring Boot自動注入的原理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用Spring Boot自具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Restful API中的錯誤處理方法

    Restful API中的錯誤處理方法

    這篇文章主要給大家介紹了關(guān)于Restful API中錯誤處理方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • SpringBoot配置發(fā)送Email的示例代碼

    SpringBoot配置發(fā)送Email的示例代碼

    本篇文章主要介紹了SpringBoot配置發(fā)送Email的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • @RequestParam?和@RequestBody注解的區(qū)別解析

    @RequestParam?和@RequestBody注解的區(qū)別解析

    在 Spring MVC 中,我們可以使用 @RequestParam 和 @RequestBody 來獲取請求參數(shù),但它們在用法和作用上有一些區(qū)別,這篇文章主要介紹了@RequestParam?和@RequestBody注解的區(qū)別,需要的朋友可以參考下
    2023-06-06
  • Java 多線程實例詳解(二)

    Java 多線程實例詳解(二)

    本文主要介紹Java 多線程的資料整理,這里整理了詳細(xì)資料及相關(guān)示例代碼,有興趣的小伙伴可以參考下
    2016-09-09
  • 項目為什么引入log4j而不是logback代碼

    項目為什么引入log4j而不是logback代碼

    這篇文章主要介紹了項目為什么引入log4j而不是logback代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • Java獲取配置文件的值過程解析

    Java獲取配置文件的值過程解析

    這篇文章主要介紹了java獲取配置文件的值過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • SpringBoot實現(xiàn)啟動項目后立即執(zhí)行的方法總結(jié)

    SpringBoot實現(xiàn)啟動項目后立即執(zhí)行的方法總結(jié)

    在項目開發(fā)中某些場景必須要用到啟動項目后立即執(zhí)行方式的功能,所以這篇文章就來和大家聊聊實現(xiàn)立即執(zhí)行的幾種方法,希望對大家有所幫助
    2023-05-05
  • maven?插件?assembly?打tar.gz包的詳細(xì)過程

    maven?插件?assembly?打tar.gz包的詳細(xì)過程

    這篇文章主要介紹了maven插件assembly打tar.gz包的詳細(xì)過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • springBoot的事件機(jī)制GenericApplicationListener用法解析

    springBoot的事件機(jī)制GenericApplicationListener用法解析

    這篇文章主要介紹了springBoot的事件機(jī)制GenericApplicationListener用法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值的相關(guān)資料
    2019-09-09

最新評論

南涧| 庄浪县| 陕西省| 荥经县| 海门市| 肥东县| 高台县| 林西县| 三河市| 浦北县| 四会市| 盱眙县| 临夏县| 北安市| 新丰县| 盐亭县| 中西区| 万源市| 灵宝市| 万源市| 霍山县| 正宁县| 涟水县| 隆回县| 山阴县| 孝感市| 洛浦县| 滕州市| 斗六市| 神池县| 和平县| 孟州市| 桓仁| 大港区| 峡江县| 满城县| 吉首市| 达日县| 武威市| 慈利县| 时尚|