当实体类字段与与数据库字段不一样时,会出现查询为空的情况
上图中实体类的password字段与数据库表中pwd字段不一样,会导致数据查询不出:
解决办法:
第一种:起别名(简单且暴力)
在Mapper.xml中将pwd字段as为password
<select id="getUser" resultType="User">
select id,name,pwd as password from mybatis.user where id=#{id}
</select>
第二种:使用reslutmap结果集映射
将查询语句的resultType改为要使用的resultmap:
<select id="getUser" resultMap="UserMap">
select* from mybatis.user where id=#{id}
</select>
上面的UserMap是自定义的名称。
<resultMap id="UserMap" type="User">
<result column="id" property="id"/>
<result column="name" property="name"/>
<result column="pwd" property="password"/>
</resultMap>
<select id="getUser" resultMap="UserMap">
select* from mybatis.user where id=#{id}
</select>
id对应自定义的reultMap名称,type对应返回结果的类型。 在结果集映射中,column对应数据库的字段,property对应实体类的字段,只需要将需要对应的字段在此一一对应修改即可。
|