ResultMap结果集映射
当我们的POJO中的字段与数据库中的字段不一致时,在利用resultType进行结果集映射时,不一致的字段将会被赋值为null,这时我们可以利用ResultMap映射进行赋值
POJO
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private int id;
private String name;
private String password;
}
数据库字段
ResultType
<select id="getUserList" resultType="User">
select * from user;
</select>
可以出数据库中是pwd,而pojo中是password,这样利用resultType是无法映射的,password查出来的结果为null
ResultMap
<select id="getUserList" resultMap="UserMap">
select * from user;
</select>
<resultMap id="UserMap" type="User">
<result column="id" property="id"/>
<result column="name" property="name"/>
<result column="pwd" property="password"/>
</resultMap>
我们用resultMap替换resultType
UserMap与下面resultMap里的id属性的值保持一致即可
type为返回值类型,这里我之所以是User是因为我起了别名,如果没有起别名要写出完整的路径
在resultMap中,column代表数据库中的列,也就是数据库里的字段,property为数据库中的字段映射的结果,这里我们与pojo保持一致即可,数据库中的pwd被映射为password,pojo里的password也就能赋值成功了