mybatis如何使用Map接收返回值
Mapperxml SQL文件
<select id="selectLiveActivityL" resultType="Map"> SELECT IFNULL(Set_Value,0) AS Set_Value FROM baseset WHERE Base_Set_Id IN (3,4,5) </select>
取出baseset 表中Base_Set_Id 為3,4,5的數(shù)據(jù)
如下:
Mapper 接口文件
List<Map<String, Object>> selectLiveActivityL();
在控制層或者實(shí)現(xiàn)層取值
List<Map<String, Object>> listMapO = service.selectLiveActivityL(); listMapO.get(0).get("Set_Value").toString();//第一個(gè)值 listMapO.get(1).get("Set_Value").toString();//第二個(gè)值 listMapO.get(2).get("Set_Value").toString();//第三個(gè)值
前面都單列取值
類似有兩列的:
List<Map<String, Object>> listMapF = service.selectLookLiveActivityE(); listMapF.get(0).get("Set_Value").toString(); listMapF.get(0).get("Set_Value_Duplicate").toString() get(0)控制第幾行; get("Set_Value")控制第幾列;
返回map和返回映射到實(shí)體類的優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
首先從上述代碼就直接可以看出來(lái),返回為map類型,使用Map作為接收類型時(shí),通常能夠在傳參到持久層這一過(guò)程中省去很多麻煩。
前端請(qǐng)求及參數(shù)到達(dá)Action或者Controller時(shí)通常使用map來(lái)進(jìn)行接收,使用map作為傳遞類型可以不用再將數(shù)據(jù)封裝為Bean類型再去根據(jù)實(shí)體屬性一一填充,直接通過(guò)Service和Dao以map類型將數(shù)據(jù)傳到map配置SQL文件當(dāng)中,省去很多數(shù)據(jù)轉(zhuǎn)換環(huán)節(jié)。
再執(zhí)行完SQL語(yǔ)句返回時(shí)制定map類型返回,不管是單條數(shù)據(jù)還是List都可以快速編寫并返回給前端。
這種方式在處理多表查詢時(shí)避免了編寫大量的實(shí)體類和屬性字段定義,減少了很多中間流程。
缺點(diǎn)
缺點(diǎn)也一樣明顯,沒(méi)有了實(shí)體類,自己就需要記好map中的key-value映射關(guān)系,其次其數(shù)據(jù)不能像映射到實(shí)體類中那樣,重寫getter方法。
當(dāng)另外一個(gè)同事來(lái)接手和維護(hù)時(shí),因?yàn)闆](méi)有了實(shí)體類,他只能通過(guò)查詢map調(diào)試,或者查看才能知曉。也不利于后期的維護(hù)。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot v2.0.3版本多數(shù)據(jù)源配置方法
這篇文章主要介紹了springboot v2.0.3版本多數(shù)據(jù)源配置方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2018-11-11IDEA 2020.3.X 創(chuàng)建scala環(huán)境的詳細(xì)教程
這篇文章主要介紹了IDEA 2020.3.X 創(chuàng)建scala環(huán)境的詳細(xì)教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04在Java項(xiàng)目中實(shí)現(xiàn)CI/CD持續(xù)集成與持續(xù)部署
這篇文章主要為大家介紹了在Java項(xiàng)目中實(shí)現(xiàn)CI/CD持續(xù)集成與持續(xù)部署詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06Java中的WeakHashMap概念原理以及簡(jiǎn)單案例
這篇文章主要介紹了Java中的WeakHashMap概念原理以及簡(jiǎn)單案例,WeakHashMap使用了軟引用結(jié)構(gòu),它的對(duì)象在垃圾回收時(shí)會(huì)被刪除,垃圾回收是優(yōu)先級(jí)非常低的線程,不能被顯示調(diào)用,當(dāng)內(nèi)存不足的時(shí)候會(huì)啟用,需要的朋友可以參考下2023-09-09Java編程實(shí)現(xiàn)基于TCP協(xié)議的Socket聊天室示例
這篇文章主要介紹了Java編程實(shí)現(xiàn)基于TCP協(xié)議的Socket聊天室,結(jié)合實(shí)例形式詳細(xì)分析了java基于TCP協(xié)議的Socket聊天室客戶端與服務(wù)器端相關(guān)實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下2018-01-01SpringBoot使用Redis實(shí)現(xiàn)消息隊(duì)列的方法小結(jié)
在應(yīng)用中把Redis當(dāng)成消息隊(duì)列來(lái)使用已經(jīng)屢見(jiàn)不鮮了,我想主要原因是當(dāng)代應(yīng)用十有八九都會(huì)用到 Redis,因此不用再引入其他消息隊(duì)列系統(tǒng),而且Redis提供了好幾種實(shí)現(xiàn)消息隊(duì)列的方法,用起來(lái)也簡(jiǎn)單,本文給大家介紹了SpringBoot使用Redis實(shí)現(xiàn)消息隊(duì)列的方法小結(jié)2024-04-04vue用CryptoJS加密,java用CryptoUtil解密
CryptoJS是一個(gè)JavaScript庫(kù),提供了一系列密碼學(xué)函數(shù)和工具,用于加密、解密、生成摘要等任務(wù),本文vue前端使用CryptoJS加密,java后端使用CryptoUtil解密2024-09-09