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