通常报错为:java.lang.IllegalArgumentException: Result Maps collection does not contain value for mapper.xxxxxx.xxxxx
两种处理方法:
1.核心文件配置
在字段名和属性名都满足规范的前提下可以使用<settings>标签。
在mybatis中配置
<settings> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings>
2.使用resultMap自定义映射
在mapper文件中配置
<resultMap id=" " type=" "> <id column=" " property=" "/> <result column=" " property=" "/> </resultMap>
resultMap的type属性为需要处理不一致情况的类。标签内部id用于处理主键和属性的映射关系,result用于处理普通字段和属性的映射关系。column为映射关系中的字段名,property为属性名。
在写sql语句时,把resultType属性换成resultMap。
举例:
dept表中的主键dept_id需对应类中的deptId
字段dept_name需对应deptName
则在查询时可写成:
<resultMap id="deptresultMap" type="Dept"> <id column="dept_id" property="deptId"/> <result column="dept_name" property="deptName"/> </resultMap>
<select id="getDeptByDeptId" resultMap="deptresultMap"> select * from dept where dept_id=#{deptId} </select>
注意:resultMap属性中必须写resultMap标签的id。