第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在 Spring 中將 JdbcTemplate 轉(zhuǎn)換為 Flux?

如何在 Spring 中將 JdbcTemplate 轉(zhuǎn)換為 Flux?

我有一個(gè)返回List<Item>. 這些項(xiàng)目是由多個(gè)后續(xù)數(shù)據(jù)庫調(diào)用、解析和聚合創(chuàng)建的(比本例中復(fù)雜得多)。如何將以下示例轉(zhuǎn)換為Flux,以便流式傳輸我的結(jié)果,而不必先在內(nèi)存中聚合所有項(xiàng)目?@RestControllerpublic class BookingInfoServlet {    @Autowired    private JdbcTemplate jdbc;    @GetMapping(value = "/export", produces = APPLICATION_JSON_VALUE)    public List<Item> export(String productType) {        List<Item> list = new ArrayList<>();        for (int i = 0; i < jdbc.count(); i++) {            List<String> refIds = jdbc.queryForList("SELECT ref_id FROM products where type = ? LIMIT 1000 OFFSET = ?", String.class, productType, i);            for (String id : refIds) {                Map map = jdbc.queryForMap("SELECT <anything> ... where some_id = ?, id);                Item item = new Item();                item.setName(map.get("name"));                item.setCode(map.getCode("code"));                item.set...                list.add(item);            }            //TODO how to convert to Flux here and already send the chunks back into the stream?        }        return list; //TODO how to convert to Flux?    }}第一個(gè)問題:這里我首先將第一個(gè)查詢的所有結(jié)果提取到內(nèi)存中,然后Item在內(nèi)存中迭代并形成我的所有 s,然后返回整個(gè)列表。因此,我試圖返回Flux<Item>。但是:我現(xiàn)在如何才能在使用時(shí)準(zhǔn)確地返回通量JdbcTemplate?由于沒有異步mysqljava 驅(qū)動(dòng)程序,我可能必須對(duì)數(shù)據(jù)庫查找進(jìn)行分頁,例如 1000,然后準(zhǔn)備 1000 個(gè)項(xiàng)目并將它們流回客戶端。然后獲取下 1000 個(gè)項(xiàng)目。但是我怎樣才能讓他們直接進(jìn)入流呢?
查看完整描述

1 回答

?
一只甜甜圈

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超5個(gè)贊

 public Flux<Item> export(String productType) {

    int pageSize = 1000;

    int count = jdbc.count();

    return Flux.range(0, count / pageSize) //page numbers

        .flatMapIterable(pageNumber ->

            jdbc.queryForList("SELECT ref_id FROM products where type = ? LIMIT ? OFFSET = ?",

                String.class,

                productType,

                pageSize,

                pageNumber * pageSize))

        .map(id -> {

          Map map = jdbc.queryForMap("SELECT <anything> ... where some_id = ?", id);

          Item item = new Item();

          //

          //

          return item;

        });

  }


查看完整回答
反對(duì) 回復(fù) 2023-04-19
  • 1 回答
  • 0 關(guān)注
  • 130 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)