解决属性名字和字段名不一致的问题
数据库中的字段
新建一个项目,拷贝之前的,测试实体类不一致的情况
//实体类
public class User {
private int id;
private String name;
private String password;
查询结果password为null
//select * from mybatis.user where id = #{id}
//类型处理器
//select id、name、pwd from mybatis.user where id = #{id}
解决办法:
1.起别名
select id,name,pwd as password from mybatis.user where id = #{id}
2.ResultMap
ResultMap
结果集映射
id name pwd
id name password
<!--结果集映射-->
<resultMap id="UserMap" type="User">
<!--column数据库中的字段,property实体类中的属性-->
<!---第一二列相同可以省略-->
<result column="id" property="id"/>
<result column="name" property="name"/>
<result column="pwd" property="password"/>
</resultMap>
<select id="getUserId" parameterType="int" resultMap="UserMap">
select * from mybatis.user where id = #{id}
</select>
- resultmap元素是MyBatis中最重要最强大的元素
- ResultMap的设计思想是对于简单的语句根本不需要配置显式的结果映射,而对于复杂一点的语句只需要描述他们的关系就行
- ResultMap最优秀的地方在于,虽然你对他相当了解了,但是根本不需要显式地用到他们