resultMap映射null问题
resultMap和resultType
你使用自定义映射集映射结果后,返回的结果类型就成了自定义映射集的type,而与mapper接口使用什么泛型接收无关。ResultMap会将所有的自定义映射返回,接收实体类里不包含的字段也会映射出来,且为null
resultMap存在的问题:当需要的结果只需要几个字段时,因为ResultMap映射的字段太多有时候容易造成数据返回很多无意义的字段
如下图:我定义的集合泛型是Data

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

甚至使用List

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

那么这个问题怎么解决呢?是每一个返回类型都写一个resultMap吗?那岂不是很麻烦,还是使用resultType方便
建议:
- 当返回对象是简单对象时,使用ResultType;
- 当返回对象是嵌套对象时,使用ResultMap;当映射实体类和数据库不是完整的驼峰和下划线对应,建议使用resultMap
思考
为什么会这样,mapper接口定义的接收参数约束不了返回结果,平时使用的时候多注意细节,虽说在DAO层映射不会报错,但是在业务层处理的时候会产生错误,接收泛型最好与返回值类型相同。

浙公网安备 33010602011771号