resultMap和resultType
ResultMap会将所有的自定义映射返回,实体类里不包含的字段也映射出来,且为null
resultMap存在的问题,你使用自定义映射集映射结果后,mapper返回的结果类型就成了自定义映射集的type
当需要的结果只需要几个字段时,而返回类型建议使用ResultType,因为ResultMap映射的字段太多有时候容易造成数据返回很多无意义的字段
如下图:我定义的集合泛型是Data
但是查看testList后发现结果类型变为了DTO;这是因为在resultMap中定义:
甚至使用List
我们甚至可以往集合里面添加字符串元素,而添加WindTurbinesDataDTO会报错,那么我们这个泛型约束在添加元素时是起到作用了的,那可是在mapper数据映射的时候List<String> selectWindTurbinesList(WindTurbinesDataDO windTurbinesDataDO);
使用的泛型接收为什么没有起到约束作用呢?
那么这个问题怎么解决呢?是每一个返回类型都写一个resultMap吗?那岂不是很麻烦,还是使用resultType方便
建议:
- 当返回对象是简单对象时,使用ResultType;
- 当返回对象是嵌套对象时,使用ResultMap;当映射实体类和数据库不是完整的驼峰和下划线对应,建议使用resultMap