mybatis中方法返回泛型與resultType不一致的解決
mybatis方法返回泛型與resultType不一致
當(dāng)xxxMaaper.java的方法返回值類型是List<A>,而xxxMappper.xml中對(duì)應(yīng)的sql的resultType指定為B對(duì)象,這樣是不會(huì)包錯(cuò)的(即使A與B不存在關(guān)系)
原因分析:
1.集合對(duì)象原本就是存儲(chǔ)對(duì)象,可以是不同的對(duì)象List
2.直接處理List類型常常會(huì)出現(xiàn)類型轉(zhuǎn)換異常,jdk5出現(xiàn)泛型,使得程序員向list中存放相同類型對(duì)象
3.泛型作用于編譯階段,僅為了防止類型混亂而出現(xiàn),類型轉(zhuǎn)換異常
4.mybatis結(jié)果集封裝bean時(shí)采用反射,是在運(yùn)行時(shí)進(jìn)行的,此時(shí)再看泛型容易進(jìn)入誤區(qū)
實(shí)例:
public class A
}
public class B{
}
@Service()
public class AImpl implements AService {
private AMapper aMapper ;
public List<B> increTrade(Map<String, Object> map) {
List<B> lst =aMapper.increTrade(map); //這里debug看到list是A類型,此時(shí)泛型誤導(dǎo)人
return lst;
}
}
public interface AMapper {
List<B>increTrade(Map<String, Object> map);
}
AMapper 對(duì)應(yīng)的xml文件
<select id="increTrade" parameterType="java.util.Map" resultType="cn.easier.admin.model.A"> //------------- </select>
List中map泛型對(duì)應(yīng)mybatis的返回類型
List<Map<String,Object>>在mybatis對(duì)應(yīng)
resultType="java.util.HashMap"
</select> <select id="selectExceptionCountBymonths" resultType="java.util.HashMap" > SELECT DATE_FORMAT( report_date, '%Y%m' ) label , COUNT( 0 ) value FROM t_smoke_detector_record WHERE tsdr_type != "火災(zāi)告警" GROUP BY label </select>
@ApiOperation(value = "按照月份統(tǒng)計(jì)報(bào)警條數(shù)",notes = "按照月份統(tǒng)計(jì)報(bào)警條數(shù)")
@GetMapping(value = "warnCountStatistics")
@ActionLog(value = "按照月份統(tǒng)計(jì)所有報(bào)警條數(shù)")
public List<Map<String,Object>> warnCountStatistics(){
List list = smokeDetectorRecordMapper.selectWarnCountBymonths();
return list;
返回結(jié)果

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot實(shí)現(xiàn)發(fā)送郵件功能過(guò)程圖解
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)發(fā)送郵件功能過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
微信公眾帳號(hào)開(kāi)發(fā)-自定義菜單的創(chuàng)建及菜單事件響應(yīng)的實(shí)例
本篇文章主要介紹了微信公眾帳號(hào)開(kāi)發(fā)-自定義菜單的創(chuàng)建及菜單事件響應(yīng)的實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-12-12
java的Map集合中按value值進(jìn)行排序輸出的實(shí)例代碼
下面小編就為大家?guī)?lái)一篇java的Map集合中按value值進(jìn)行排序輸出的實(shí)例代碼。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08
SpringCloud微服務(wù)續(xù)約實(shí)現(xiàn)源碼分析詳解
這篇文章主要介紹了SpringCloud微服務(wù)續(xù)約實(shí)現(xiàn)源碼分析,服務(wù)續(xù)期和服務(wù)注冊(cè)非常相似,服務(wù)注冊(cè)在Eureka?Client程序啟動(dòng)之后開(kāi)啟,并同時(shí)開(kāi)啟服務(wù)續(xù)期的定時(shí)任務(wù)2022-11-11
JAVA用戶自定義事件監(jiān)聽(tīng)實(shí)例代碼
這篇文章主要介紹了JAVA用戶自定義事件監(jiān)聽(tīng)實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-04-04
關(guān)于Java變量的聲明、內(nèi)存分配及初始化詳解
下面小編就為大家?guī)?lái)一篇關(guān)于Java變量的聲明、內(nèi)存分配及初始化詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03
springcloud項(xiàng)目占用內(nèi)存好幾個(gè)G導(dǎo)致服務(wù)器崩潰的問(wèn)題
這篇文章主要介紹了springcloud項(xiàng)目占用內(nèi)存好幾個(gè)G導(dǎo)致服務(wù)器崩潰的問(wèn)題,本文給大家分享解決方案供大家參考,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10
ThreadPoolExecutor中的submit()方法詳細(xì)講解
在使用線程池的時(shí)候,發(fā)現(xiàn)除了execute()方法可以執(zhí)行任務(wù)外,還發(fā)現(xiàn)有一個(gè)方法submit()可以執(zhí)行任務(wù),本文就詳細(xì)的介紹一下ThreadPoolExecutor中的submit()方法,具有一定的參考價(jià)值,感興趣的可以了解一下2022-04-04

