当我们查询时,传入的参数是一个对象时(parameterType="POJO具体类"),mybatis存在一个类型处理器(typeHandlers),会自动将数据库的字段和具体类中属性进行匹配,当数据库表格的字段和具体类的属性不一致时,如下图,查询出来的结果,pwd会对应为null,这时候就需要解决了。
解决办法一,直接在sql语句中使用别名查询,如下:该方法粗暴简单
<select id="getUserById" resultType="user" parameterType="int" >
select id,`name`,passward as pwd from school.user where id = #{id}
</select>
解决方法二,使用ResultMap 结果集映照,即将查询的结果先进行映射,在返回对应的类型,对应代码如下,其中select的标签中,mark要对应resultMap中id的mark,表示使用上面的映射关系,type类型为返回对象,
<resultMap id="mark" type="user">
<result column="id" property="id"/>
<result column="name" property="name"/>
<result column="passward" property="pwd"/>
</resultMap>
<select id="getUserById" resultMap="mark" parameterType="int" >
select id,`name`,passward as pwd from school.user where id = #{id}
</select>
column 表示从数据库中查询到的字段或者别名
property 表示具体类的对应的属性值