resultMap映射null问题

resultMap和resultType

你使用自定义映射集映射结果后,返回的结果类型就成了自定义映射集的type,而与mapper接口使用什么泛型接收无关。ResultMap会将所有的自定义映射返回,接收实体类里不包含的字段也会映射出来,且为null

resultMap存在的问题:当需要的结果只需要几个字段时,因为ResultMap映射的字段太多有时候容易造成数据返回很多无意义的字段

如下图:我定义的集合泛型是Data

image

但是查看testList后发现结果类型变为了DTO;这是因为在resultMap中定义:

image

甚至使用List接收都是可以的

image

我们甚至可以往集合里面添加字符串元素,而添加WindTurbinesDataDTO会报错,那么我们这个泛型约束在添加元素时是起到作用了的,那可是在mapper数据映射的时候List<String> selectWindTurbinesList(WindTurbinesDataDO windTurbinesDataDO);使用的泛型接收为什么没有起到约束作用呢?

image

那么这个问题怎么解决呢?是每一个返回类型都写一个resultMap吗?那岂不是很麻烦,还是使用resultType方便

建议:

  1. 当返回对象是简单对象时,使用ResultType;
  2. 当返回对象是嵌套对象时,使用ResultMap;当映射实体类和数据库不是完整的驼峰和下划线对应,建议使用resultMap

思考

为什么会这样,mapper接口定义的接收参数约束不了返回结果,平时使用的时候多注意细节,虽说在DAO层映射不会报错,但是在业务层处理的时候会产生错误,接收泛型最好与返回值类型相同。

posted @   好滴都  阅读(95)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示