国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

mybatis使用的奇技淫巧

alexnevsky / 430人閱讀

摘要:那么查詢結果應該為張三服裝茶具李四服裝服裝此處需要注意一點,的元素調用方法時,自動映射的屬性名和列名應該保持一致,或者列表必須是數據庫表中的字段名,而不是別名。

合并多行查詢的結果 業務需求

商家可以根據商品類目分類,每位商家可以有多個商品類目,商品類目又跟運營類目有一種關聯規則。此處暫且不說運營類目。根據業務,商家信息是一張表,商家與商品類目有一張關聯表,商品類目有一張表,權且使用三張表。

其他不相干字段不展示

商家表(user)

uid username mobile
1 張三 12345678901
2 李四 12345600002

商品類目表(item_category)

icid name status parentid
1 服裝 0 0
2 茶具 0 0
3 食品 0 0

商家與商品類目(user_item_cate_rel)

uid icid
1 1
1 2
2 1
2 3

如果我們需要在前端頁面展示每個商家的商品類目,那么我們返回的結果中就需要每條商家數據中包含所屬商品的類目。實現方式有很多種:1.一條sql語句可以實現,使用group_concat函數并根據uid分組2.先查詢商家信息,再根據商家uid查詢user_item_cate_rel和item_category表,再將結果在model中組合3.用mybatis的resultMap。此處只看1和3的實現方式。

展示需求:

# 商家ID 商家名 手機號碼 商品類目 操作
1 1 張三 12345678901 服裝,茶具 刪除 修改
2 2 李四 12345600002 服裝,食品 刪除 修改
group_caoncat實現
SELECT u.*,group_concat(ic.name) categories FROM user 
LEFT JOIN user_item_cate_rel uicr
ON u.uid = uicr.uid
LEFT JOIN item_category ic
ON uicr.icid = ic.icid
WHERE ... # 查詢條件
GROUP BY u.uid

大概就這樣,可以把類目直接返回給前端,毫無疑問,這個實現是最快的。但是,當數據量大的時候,并且是查詢列表的時候,全表掃描,就會出現慢查詢。

巧妙使用Mybatis resultMap

創建User和Category POJO。User除了user表的字段作為屬性外,外加一個private List categories屬性。Category的字段分別為:icidname

mapper的xml中:

先定義一個id為user的resultMap:


    
        
        
    

實現select屬性對應方法:此處select的id為上面id為user的resultMap中collection的select元素,參數#{uid}為column元素指定的字段。

獲取指定條數的數據:mybatis可以根據傳入的參數組裝sql語句。

上面查詢中,UserSearch是查詢條件POJO,可以根據需要自定義過濾那些字段。其中有一個屬性是icid,就是根據傳入的一個商品類目查詢商家信息。比如,要查詢icid=1的商家,那么我們返回的數據不僅僅是icid=1的,還應該是icid=1商家的其他icid信息。

那么查詢結果應該為:

[
    {
        "uid": 1,
        "username": "張三",
        "mobile": "12345678901",
        "categories": [
            {
                "icid": 1,
                "name": "服裝"
            },
            {
                "icid": 2,
                "name": "茶具"
            }
        ]
    },
    {
        "uid": 2,
        "username": "李四",
        "mobile": "12345600002",
        "categories": [
            {
                "icid": 1,
                "name": "服裝"
            },
            {
                "icid": 3,
                "name": "服裝"
            }
        ]
    }
]

此處需要注意一點,resultMap的select元素調用getCategory方法時,自動映射的屬性名和列名應該保持一致,或者列表必須是數據庫表中的字段名,而不是別名。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/66699.html

相關文章

  • 探討奇技淫巧

    摘要:探討奇技淫巧起源在工程實踐中,我們常常會遇到一些奇技淫巧。所謂奇技淫巧,就是官方在設計或者實踐中并未想象出的代碼風格或者使用場景。那么究竟應不應在平時學習呢究竟應不應該在工程中使用呢,或者使用怎么樣的奇技淫巧。 探討奇技淫巧 起源 在工程實踐中,我們常常會遇到一些奇技淫巧。所謂奇技淫巧,就是官方在設計或者實踐中并未想象出的代碼風格或者使用場景。其實也就是類似于 react 的 hoc,...

    soasme 評論0 收藏0
  • JavaScript 奇技淫巧

    摘要:這是一個長期更新的文章,歡迎大家補充的奇技淫巧個人建議一些奇技淫巧使得代碼可讀性較差,不建議使用兩行寫一個評分組件錯誤處理的正確姿勢另外一種等價于論如何優雅的取整論如何優雅的交換數值用最短的代碼實現數組去重 這是一個長期更新的文章,歡迎大家補充 JavaScript 的奇技淫巧 個人建議:一些奇技淫巧使得代碼可讀性較差,不建議使用 1. 兩行寫一個評分組件 let rate = 2 ★...

    luqiuwen 評論0 收藏0
  • 這不是“奇技淫巧” - Python中將字符串編譯成表達式運行方法和使用場景

    摘要:的自帶函數提供了一個非常有趣的特性,可以將給一個字符串當做一個表達式去執行。例如這種服務器自助運維的運維任務中的定義和判斷 Python的自帶函數 eval 提供了一個非常有趣的特性,可以將給一個字符串當做一個表達式去執行。先上一個例子: cond = compile(succ_rate

    ZweiZhao 評論0 收藏0
  • React 奇技淫巧 - defaultValue 和虛擬 dom diff 算法實現表單重置

    摘要:根據虛擬的算法,只要改變節點的類型就能促使在的時候重新創建虛擬。不過這個效果依賴于虛擬算法。如果使用時候出現什么副作用,鄙人概不負責。此技巧在寫文章時正處于的版本 我們知道 React 的標準模式是單向數據流,而其表單項通常需要監聽 onChange 事件,然后通過改變外部的 value 來回寫表單項的 value,譬如如下 input class App extends React....

    paulquei 評論0 收藏0
  • 那些你可能不知道瀏覽器奇技淫巧

    摘要:比如經常逛知乎可以看到不少妹子自拍,比如這個問題打開控制臺執行這個或者就可以將所有圖片地址復制好了。另外關于知乎還有個隱藏技能,按可以打開快捷鍵幫助,不用鼠標也可以玩知乎了,微博也有這功能。平常工作少不了用瀏覽器,以下分享一些瀏覽器的使用技巧,更好的有助于你的工作。 ps: 以下技巧均在 Chrome 瀏覽器下測試的。 網頁長截圖 按 F12 彈出控制臺,按 ctrl+shift+p 彈出...

    banana_pi 評論0 收藏0

發表評論

0條評論

alexnevsky

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<