Mybatis-04-ResultMap结果集映射
解决属性名和字段名不一致的问题
数据库中的字段
实体类的属性
public class User {
private int id;
private String name;
private String password;//注意和数据库中的pwd不一样
}
查询时出问题
User{id=1, name='void', pwd='null'}
User{id=2, name='cmy', pwd='null'}
User{id=4, name='小明', pwd='null'}
User{id=5, name='明天', pwd='null'}
根源在于
<select id="getUserlist" resultType="user">
<!--下面的*写全是id,name,pwd-->
select * from mybatis.user
</select>
由于属性名password和数据库中的字段名pwd不一致,所以查出来为null
解决方法1------>起别名
<select id="getUserlist" resultType="user">
select id,name,pwd as password from mybatis.user
</select>
解决方法2------>结果集映射
<resultMap id="userMap" type="User">
<!--字段和属性一样的可省略-->
<result column="pwd" property="password"/>
</resultMap>
<!--这里不用resultType用resultMap做结果集映射-->
<select id="getUserlist" resultMap="userMap">
select * from mybatis.user
</select>
在一对多,多对多时结果集映射将起大作用