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

Mybatis中的游標(biāo)查詢Cursor(滾動查詢)

 更新時間:2024年01月27日 09:33:34   作者:miraitowa.cn  
這篇文章主要介紹了Mybatis中的游標(biāo)查詢Cursor(滾動查詢),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

需求

是實現(xiàn)滾動查詢而不是分頁

用游標(biāo)查詢實現(xiàn)此需求

總體思路

滾動查詢,往下拉滾動條觸發(fā)請求,返回數(shù)據(jù)并帶當(dāng)前下標(biāo),以備下次請求繼續(xù)往下查詢

①首先在dao層mapper文件中寫查詢方法

(下面的示例帶有查詢條件)

// 策略為向下滾動    
    @Options(resultSetType = ResultSetType.FORWARD_ONLY)
    @Select({"select * from task where status!=#{status} order by create_time desc"})
    Cursor<Task> getTasksStatistic(Integer status);

②在service層寫方法并在serviceimpl中實現(xiàn)

// TaskCursorVo是封裝類
TaskCursorVo getTaskStatus(Integer currentIndex, Integer pageSize);
public TaskCursorVo getTaskStatus(Integer currentIndex,Integer pageSize) {
        TaskCursorVo taskCursorVo=new TaskCursorVo();
        List<TaskStatusVo> collect=new ArrayList<>();
// 第一個參數(shù)為方法名,第二個參數(shù)是查詢條件的值(如果沒有查詢條件就寫null),第三個條件是從下標(biāo)為currentIndex的開始查pageSize條數(shù)據(jù)
        Cursor<Task> tasksStatistic = sqlSessionTemplate.selectCursor("getTasksStatistic",DELETED.getCode(),new RowBounds(currentIndex,pageSize));
// 對結(jié)果進行遍歷封裝
        Iterator<Task> iterator = tasksStatistic.iterator();
        while (iterator.hasNext()) {
                Task task = iterator.next();
                TaskStatusVo taskStatusVo = new TaskStatusVo();
                BeanUtils.copyProperties(task, taskStatusVo);
                taskStatusVo.setStatusName(Objects.requireNonNull(getByCode(task.getStatus())).getDesc());
                collect.add(taskStatusVo);
        }
        taskCursorVo.setTaskStatusVos(collect);
// 需要把當(dāng)前下標(biāo)返回給前端
        taskCursorVo.setCurrentIndex(tasksStatistic.getCurrentIndex());
        Example e=new Example(Task.class);
        Example.Criteria c = e.createCriteria().andNotEqualTo("status", DELETED.getCode());
        List<Task> tasks = taskMapper.selectByExample(e);
// 把總條數(shù)查出來給前端
        taskCursorVo.setTotalSize(tasks.size());
        return taskCursorVo;
    }

③controller實現(xiàn)

@GetMapping("/taskStatus")
    public ResultModel taskStatus(@RequestParam(defaultValue = "0") Integer currentIndex,@RequestParam(defaultValue = "20") Integer pageSize){
// 第一次默認(rèn)從第0條開始查詢20條,往后的前端會把上次請求返回的當(dāng)前下表傳過來
// 如果不是從第一次查詢,就要從上次查詢當(dāng)前下標(biāo)的下一條數(shù)據(jù)開始查詢
        if (currentIndex!=0){
            currentIndex+=1;
        }
        TaskCursorVo taskCursorVo = taskService.getTaskStatus(currentIndex, pageSize);
        return ResultModel.success(taskCursorVo);
    }

總結(jié)

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

相關(guān)文章

  • Springboot自動配置原理及DataSource的應(yīng)用方式

    Springboot自動配置原理及DataSource的應(yīng)用方式

    這篇文章主要介紹了Springboot自動配置原理及DataSource的應(yīng)用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java微服務(wù)開發(fā)之Swagger詳解

    Java微服務(wù)開發(fā)之Swagger詳解

    Swagger 是一個規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化 RESTful 風(fēng)格的 Web 服務(wù)??傮w目標(biāo)是使客戶端和文件系統(tǒng)作為服務(wù)器以同樣的速度來更新。文件的方法,參數(shù)和模型緊密集成到服務(wù)器端的代碼,允許API來始終保持同步
    2021-10-10
  • Mybatis執(zhí)行update失敗的解決

    Mybatis執(zhí)行update失敗的解決

    這篇文章主要介紹了Mybatis執(zhí)行update失敗的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • spring?cloud?gateway中netty線程池小優(yōu)化

    spring?cloud?gateway中netty線程池小優(yōu)化

    這篇文章主要介紹了spring?cloud?gateway中netty線程池小優(yōu)化技巧示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • Java中的對稱加密詳解

    Java中的對稱加密詳解

    大家好,本篇文章主要講的是Java中的對稱加密詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • 解析Spring?漏洞及其修復(fù)方案

    解析Spring?漏洞及其修復(fù)方案

    官宣了最近網(wǎng)傳的Spring漏洞。攻擊者利用該漏洞,可在未授權(quán)的情況下遠(yuǎn)程執(zhí)行命令,今天通過本文給大家普及下漏洞分析影響范圍及解決方案,感興趣的朋友跟隨小編一起看看吧
    2022-04-04
  • Java更新調(diào)度器(update scheduler)的使用詳解

    Java更新調(diào)度器(update scheduler)的使用詳解

    Java更新調(diào)度器是Java中的一個特性,可以自動化Java應(yīng)用程序的更新過程,它提供了一種方便的方式來安排Java應(yīng)用程序的更新,確保其與最新的功能、錯誤修復(fù)和安全補丁保持同步,本文將深入介紹如何使用Java更新調(diào)度器,并解釋它對Java開發(fā)人員和用戶的好處
    2023-11-11
  • IDEA版使用Java操作Redis數(shù)據(jù)庫的方法

    IDEA版使用Java操作Redis數(shù)據(jù)庫的方法

    這篇文章主要介紹了IDEA版使用Java操作Redis數(shù)據(jù)庫的方法,首先需要下載jedis.jar包,然后再工程中設(shè)置具體操作步驟跟隨小編一起學(xué)習(xí)下吧
    2021-08-08
  • 使用spring.profiles.active來分區(qū)配置的方法示例

    使用spring.profiles.active來分區(qū)配置的方法示例

    這篇文章主要介紹了使用spring.profiles.active來分區(qū)配置的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Java實現(xiàn)按鍵精靈的示例代碼

    Java實現(xiàn)按鍵精靈的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用Java語言實現(xiàn)按鍵精靈,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)或工作有一定的參考價值,感興趣的可以學(xué)習(xí)一下
    2022-05-05

最新評論