亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

mybatis一對多關系用oracle實現分頁

mybatis一對多關系用oracle實現分頁

喵喔喔 2018-08-20 10:22:50
有 回復表,二級回復表(像貼吧里的樓中樓回復)。在主貼頁面里,把回復+二級回復一起分頁顯示。大概是這種形式:回復1-二級回復1-二級回復2回復2回復3回復類里面有二級回復集合,oracle存儲過程里實現分頁查詢時,先回復 left join 二級回復,再用rownum分頁。但是界面上顯示的時候,因為我先把一級回復顯示出來后,再遍歷顯示該一級回復對象里的二級回復集合,所以第二頁開始會再顯示一級回復的內容,就會超出原本設置的每頁行數值。補充:行數是指回復+二級回復的數量。所以如果按我這么寫sql的話,一級跟他的第一個二級回復會變成一條數據,而實際上要求是把他們分成兩行。并且第二頁的話,如果回復3有二級回復,會把回復3也給顯示出來,就會變成6行:回復3--二級回復3回復4回復5回復6回復7想要的效果是去掉回復3的:--二級回復3回復4回復5回復6回復7想問這種要怎么解決? 還是說表設計的不對,應該只用一張回復表?
查看完整描述

2 回答

?
四季花海

TA貢獻1811條經驗 獲得超5個贊

之前做過一個類似的無限級的菜單樹,我大概說一下我的思路,具體能不能實現你可以試試,
主要是通過Map+遞歸實現層層嵌套,然后我覺的可以對一級的回復坐分頁,結構部分代碼你可以參考下:

public class ResourceTree {

    public static Map<String, Object> mapArray = new LinkedHashMap<String, Object>();

    public List<Resource> menuCommon;

    public List<Object> list = new ArrayList<Object>();


    public List<Object> menuList(List<Resource> resource) {

        this.menuCommon = resource;

        for (Resource x : resource) {

            Map<String, Object> mapArr = new LinkedHashMap<String, Object>();

            if (x.getParentId() == 0) {

                mapArr.put("id", x.getId());

                mapArr.put("text", x.getResourceName());

                mapArr.put("resourceUrl", x.getUrl());

                mapArr.put("resourceParent", x.getParentId());

                mapArr.put("resourceType", x.getType());

                mapArr.put("resourceTag", x.getResourceCode());

                // mapArr.put("resourceIcon", x.getResourceIcon());

                // mapArr.put("resourceParentPath", x.getResourceParentPath());

                mapArr.put("children", menuChild(x.getId()));

                list.add(mapArr);

            }

        }

        return list;

    }


    public List<?> menuChild(int id) {

        List<Object> lists = new ArrayList<Object>();

        for (Resource a : menuCommon) {

            Map<String, Object> childArray = new LinkedHashMap<String, Object>();

            if (a.getParentId() == id) {

                childArray.put("id", a.getId());

                childArray.put("text", a.getResourceName());

                childArray.put("resourceUrl", a.getUrl());

                childArray.put("resourceParent", a.getParentId());

                childArray.put("resourceType", a.getType());

                childArray.put("resourceTag", a.getResourceCode());

                // childArray.put("resourceIcon", a.getResourceIcon());

                // childArray.put("resourceParentPath",    a.getResourceParentPath());

                childArray.put("children", menuChild(a.getId()));

                lists.add(childArray);

            }

        }

        return lists;


    }

}


查看完整回答
反對 回復 2018-08-26
?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

先按條件查出每一頁的ID數組 用你分頁的方式
再用ID數組 查詢出你需要的詳細數據

查看完整回答
反對 回復 2018-08-26
  • 2 回答
  • 0 關注
  • 1377 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號