成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

mybatis使用的奇技淫巧

alexnevsky / 428人閱讀

摘要:那么查詢(xún)結(jié)果應(yīng)該為張三服裝茶具李四服裝服裝此處需要注意一點(diǎn),的元素調(diào)用方法時(shí),自動(dòng)映射的屬性名和列名應(yīng)該保持一致,或者列表必須是數(shù)據(jù)庫(kù)表中的字段名,而不是別名。

合并多行查詢(xún)的結(jié)果 業(yè)務(wù)需求

商家可以根據(jù)商品類(lèi)目分類(lèi),每位商家可以有多個(gè)商品類(lèi)目,商品類(lèi)目又跟運(yùn)營(yíng)類(lèi)目有一種關(guān)聯(lián)規(guī)則。此處暫且不說(shuō)運(yùn)營(yíng)類(lèi)目。根據(jù)業(yè)務(wù),商家信息是一張表,商家與商品類(lèi)目有一張關(guān)聯(lián)表,商品類(lèi)目有一張表,權(quán)且使用三張表。

其他不相干字段不展示

商家表(user)

uid username mobile
1 張三 12345678901
2 李四 12345600002

商品類(lèi)目表(item_category)

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

商家與商品類(lèi)目(user_item_cate_rel)

uid icid
1 1
1 2
2 1
2 3

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

展示需求:

# 商家ID 商家名 手機(jī)號(hào)碼 商品類(lèi)目 操作
1 1 張三 12345678901 服裝,茶具 刪除 修改
2 2 李四 12345600002 服裝,食品 刪除 修改
group_caoncat實(shí)現(xiàn)
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 ... # 查詢(xún)條件
GROUP BY u.uid

大概就這樣,可以把類(lèi)目直接返回給前端,毫無(wú)疑問(wèn),這個(gè)實(shí)現(xiàn)是最快的。但是,當(dāng)數(shù)據(jù)量大的時(shí)候,并且是查詢(xún)列表的時(shí)候,全表掃描,就會(huì)出現(xiàn)慢查詢(xún)。

巧妙使用Mybatis resultMap

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

mapper的xml中:

先定義一個(gè)id為user的resultMap:


    
        
        
    

實(shí)現(xiàn)select屬性對(duì)應(yīng)方法:此處select的id為上面id為user的resultMap中collection的select元素,參數(shù)#{uid}為column元素指定的字段。

獲取指定條數(shù)的數(shù)據(jù):mybatis可以根據(jù)傳入的參數(shù)組裝sql語(yǔ)句。

上面查詢(xún)中,UserSearch是查詢(xún)條件POJO,可以根據(jù)需要自定義過(guò)濾那些字段。其中有一個(gè)屬性是icid,就是根據(jù)傳入的一個(gè)商品類(lèi)目查詢(xún)商家信息。比如,要查詢(xún)icid=1的商家,那么我們返回的數(shù)據(jù)不僅僅是icid=1的,還應(yīng)該是icid=1商家的其他icid信息。

那么查詢(xún)結(jié)果應(yīng)該為:

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

此處需要注意一點(diǎn),resultMap的select元素調(diào)用getCategory方法時(shí),自動(dòng)映射的屬性名和列名應(yīng)該保持一致,或者列表必須是數(shù)據(jù)庫(kù)表中的字段名,而不是別名。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/66699.html

相關(guān)文章

  • 探討奇技淫巧

    摘要:探討奇技淫巧起源在工程實(shí)踐中,我們常常會(huì)遇到一些奇技淫巧。所謂奇技淫巧,就是官方在設(shè)計(jì)或者實(shí)踐中并未想象出的代碼風(fēng)格或者使用場(chǎng)景。那么究竟應(yīng)不應(yīng)在平時(shí)學(xué)習(xí)呢究竟應(yīng)不應(yīng)該在工程中使用呢,或者使用怎么樣的奇技淫巧。 探討奇技淫巧 起源 在工程實(shí)踐中,我們常常會(huì)遇到一些奇技淫巧。所謂奇技淫巧,就是官方在設(shè)計(jì)或者實(shí)踐中并未想象出的代碼風(fēng)格或者使用場(chǎng)景。其實(shí)也就是類(lèi)似于 react 的 hoc,...

    soasme 評(píng)論0 收藏0
  • JavaScript 奇技淫巧

    摘要:這是一個(gè)長(zhǎng)期更新的文章,歡迎大家補(bǔ)充的奇技淫巧個(gè)人建議一些奇技淫巧使得代碼可讀性較差,不建議使用兩行寫(xiě)一個(gè)評(píng)分組件錯(cuò)誤處理的正確姿勢(shì)另外一種等價(jià)于論如何優(yōu)雅的取整論如何優(yōu)雅的交換數(shù)值用最短的代碼實(shí)現(xiàn)數(shù)組去重 這是一個(gè)長(zhǎng)期更新的文章,歡迎大家補(bǔ)充 JavaScript 的奇技淫巧 個(gè)人建議:一些奇技淫巧使得代碼可讀性較差,不建議使用 1. 兩行寫(xiě)一個(gè)評(píng)分組件 let rate = 2 ★...

    luqiuwen 評(píng)論0 收藏0
  • 這不是“奇技淫巧” - Python中將字符串編譯成表達(dá)式運(yùn)行方法和使用場(chǎng)景

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

    ZweiZhao 評(píng)論0 收藏0
  • React 奇技淫巧 - defaultValue 和虛擬 dom diff 算法實(shí)現(xiàn)表單重置

    摘要:根據(jù)虛擬的算法,只要改變節(jié)點(diǎn)的類(lèi)型就能促使在的時(shí)候重新創(chuàng)建虛擬。不過(guò)這個(gè)效果依賴(lài)于虛擬算法。如果使用時(shí)候出現(xiàn)什么副作用,鄙人概不負(fù)責(zé)。此技巧在寫(xiě)文章時(shí)正處于的版本 我們知道 React 的標(biāo)準(zhǔn)模式是單向數(shù)據(jù)流,而其表單項(xiàng)通常需要監(jiān)聽(tīng) onChange 事件,然后通過(guò)改變外部的 value 來(lái)回寫(xiě)表單項(xiàng)的 value,譬如如下 input class App extends React....

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

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

    banana_pi 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<