新建一个项目,拷贝之前的,mybatis-02,测试实体类字段不一致的情况。
主要是这三部分的内容。
在实体类中,将密码改为password而不是pwd
全部删除干净,只留一个根据ID查询。
测试里面也进行修改。
发现测试之后,password结果为空。
解决:
方法一:起别名
// select * from mybatis.user where id = #{id} // 会发现这样处理之后,sql语句是select id,name,pwd from...这里没有pwd所以需要起别名
所以将sql起别名,修改为
select id,name,pwd as password from mybatis.user where id = #{id}
成功!
第二种:
使用ResultType结果集映射。
现在为止,和原先resultType=User效果是一样的,
column是数据库中的列,property是java实体类中的属性,进行修改,下面是修改之后的内容。
UserMapper.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.Li.dao.UserMapper">
<!--结果集映射,result就是修改返回值的内容。column是数据库中的列,property是java实体类中的属性-->
<resultMap id="UserMap" type="User">
<result column="pwd" property="password"/>
</resultMap>
<!--ID查询用户-->
<select id="getUserById" resultMap="UserMap">
select * from mybatis.user where id = #{id}
</select>
</mapper>
测试之后成功!