通过示例来解释
我们的数据库中有User表,字段名是id, name,pwd
而我们的java代码中实体类属性名设置了id,name,password
字段名:数据库 id name pwd
属性名:实体类 id name password
mybatis会根据数据库的字段名去找对应的实体类的属性名,(他会将所有列名转换为小写,然后去找实体类中对应的 set方法 ,set方法后面的字段就对应数据库的字段名;如果不一样就会返回null)
解决方案:
- 修改set方法名字 【不推荐使用】
前面也提到了,Mybatis是通过set方法来进行查询的,那我们只需要修改了set方法不就可以让其查询到了,这是之前的:
修改后:
- 给sql语句取别名【字段少的时候推荐使用】
<select id="selectUser" resultType="com.kuang.pojo.User">
select id,name,pwd as password from user
</select>
- 结果集映射ResultMap 【最推荐的方式】
<select id="selectUser" resultMap="UserMap">
select * from user
</select>
<!--设置结果的映射类型-->
<resultMap id="UserMap" type="User">
<!--
一般通过id标签来映射主键
column = 数据库的列名
property = 结果集对应的数据库列名的映射名
-->
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="pwd" property="password"/>
</resultMap>