Mybatis @MapKey返回key的类型是怎么来的?
问题描述:
@MapKey("gradeId")
Map queryAnswerRecord(@Param("recordId")Long recordId);
这个gradeId本来是个Integer,这儿却要写成String。因为如果是Integer,在返回后直接取map.get(3),这样的会取不到。
默认的Integer缓存范围127之内不是都行么,为什么3就不行了?
但返回的Map的key的类型并不是由这里的泛型定义决定的,这里mybatis返回的key实际是String,所以取整型key是取不取到的。
文/程忠 浏览次数:0次 2019-06-01 11:16:34
@MapKey("gradeId")
Map
这个gradeId本来是个Integer,这儿却要写成String。因为如果是Integer,在返回后直接取map.get(3),这样的会取不到。
默认的Integer缓存范围127之内不是都行么,为什么3就不行了?
@MapKey("gradeId") Map<Integer, EvaluationOfflineAnswerVo> queryAnswerRecord(@Param("recordId")Long recordId);
@MapKey的用法,类型有坑。
解决方法:
@MapKey返回的Map的key的类型并不是由返回的Map的里的泛型决定的,那是什么决定的?这个是由返回对象对应的字段的get方法返回类型决定的。我上面的例子,之所以返回了String,是因为我的返回对象定义如下:
public class EvaluationOfflineAnswerVo{
private Integer gradeId;
public String getGradeId() {
return gradeId==null?"":String.valueOf(gradeId);
}
}
好了,把get方法返回类型改成Integer ,就可以结案了:
public Integer getGradeId() {
return gradeId;
}
相关阅读
微信扫描-捐赠支持
加入QQ群-技术交流
评论:
↓ 广告开始-头部带绿为生活 ↓
↑ 广告结束-尾部支持多点击 ↑