久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術(shù)文章
文章詳情頁

java - 阿里的開發(fā)手冊中為什么禁用map來作為查詢的接受類?

瀏覽:180日期:2023-11-17 11:16:44

問題描述

我在項目中經(jīng)常使用List<Map<String,Object>>做為查詢的接受對象.感覺使用方便,不用每個多表查詢的時候都創(chuàng)建DTO類.java - 阿里的開發(fā)手冊中為什么禁用map來作為查詢的接受類?

上面只針對查詢,如果將map應(yīng)用到DTO,VO是否會有相同的問題.

問題解答

回答1:

1、map參數(shù)數(shù)量大時不易維護(hù)。要通過識別字符串形式的key,可能哪個字母沒加程序就出錯了

2、map轉(zhuǎn)成實(shí)體,耗費(fèi)資源。或者不轉(zhuǎn)實(shí)體,直接將map傳到sql層,但要判斷空值(傳沒傳這個參數(shù)啊。。。),參數(shù)數(shù)量一多要加一堆判斷(sql效率下降,也不易維護(hù))

3、創(chuàng)建map再put進(jìn)參數(shù)值,比創(chuàng)建一個實(shí)體類的時間要長(map數(shù)量少時創(chuàng)建的時間差距很小,但是數(shù)量較大時差距會非常大)

4、參數(shù)類型的控制。sql中不是字符串類型的參數(shù)還要轉(zhuǎn)成數(shù)值。。。錯誤跑到sql中,容易被CC

5、面相對象,將sql層與實(shí)體分離,降低耦合。否則維護(hù)很麻煩

回答2:

我認(rèn)為有兩個方面吧:1.面向?qū)ο蟮乃枷?.效率吧,畢竟玩查詢的【這里的效率是指map.get(key)】,map.put然后get的 這樣很容易出錯吧, 的確不怎么好

都是我瞎編的,呵呵,大學(xué)老師好像講過吧。。

回答3:

不利于他人共同開發(fā)和后期維護(hù)

回答4:

Map<String, Object> 類型不安全

回答5:

Map用查詢參數(shù),方法調(diào)用者根本就不知道方法提供者提供方法參數(shù)可以存哪些健值對以及健值對類型,map.put(key,value)亂傳的問題不能在編譯階段發(fā)現(xiàn),用QueryDto可以精確定義參數(shù)類型和限制(JSR 303 Validation)

回答6:

如果我沒有理解錯誤的話.

數(shù)據(jù)查詢對象是指 dao 查詢方法的參數(shù)封裝, 并不是指方法的返回. 這樣做的好處是代碼的可讀性高, 你直接使用map作為接口參數(shù), 使用者想要確定具體的查詢條件非常困難, 而且給外部接口調(diào)用的靈活性太高, 比如 使用者在map中增加一個x, 但是你的查詢根本不支持, 但是你如何讓使用者能夠確認(rèn)的知道呢?

而 dao 的返回參數(shù)按照文檔的要求是應(yīng)該使用 do/dto.

回答7:

感覺主要是調(diào)試和維護(hù)困難,比如任何key的拼寫錯誤,要到query執(zhí)行時才能反饋

回答8:

map的優(yōu)點(diǎn):

1、靈活性強(qiáng)于javabean,易擴(kuò)展,耦合度低。2、寫起來簡單,代碼量少。

看一看Javabean的優(yōu)點(diǎn):

1、面向?qū)ο蟮牧己迷忈尅?、數(shù)據(jù)結(jié)構(gòu)清晰,便于團(tuán)隊開發(fā) & 后期維護(hù)。3、代碼足夠健壯,可以排除掉編譯期錯誤。

權(quán)衡利弊,如果團(tuán)隊開發(fā)還是javabean比較好,個人項目就無所謂了。歡迎補(bǔ)充!~

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 大宁县| 雅安市| 忻州市| 区。| 桐城市| 益阳市| 吴川市| 平昌县| 黄梅县| 绥滨县| 津南区| 桓仁| 靖江市| 麻栗坡县| 天柱县| 永川市| 潍坊市| 永仁县| 柳江县| 密云县| 尉犁县| 三台县| 台北县| 沈丘县| 黔江区| 麻栗坡县| 银川市| 历史| 微博| 恭城| 高青县| 云梦县| 巧家县| 揭阳市| 潮安县| 汾阳市| 尼勒克县| 云阳县| 黄梅县| 绥滨县| 津南区|