问题描述:在实际项目中会经常出现数据库中表的字段名和类的属性名不一致的情况,如下面这两段代码所示:
实体类代码:
public class User {
private int id; //id
private String name; //姓名
private String password; //密码和数据库不一样!
//构造
//set/get
//toString()
}
数据库表中的字段名;
id
name
pwd
可以看出,密码和数据库中不一样,一个是password,一个是pwd。
解决方法
方法一:
将数据库中的列名(也就是pwd)指定别名,使其与实体类中的属性名一致
<select id="selectUserById" resultType="User">
select id , name , pwd as password from user where id = #{id}
</select>
方法二:使用结果集映射的方式 ResultMap :将pwd和password进行映射。
<!--第二步-->
<!--编写resultMap,实现手动映射-->
<resultMap id="UserMap" type="User">
<!-- id为主键 -->
<id column="id" property="id"/>
<!-- column是数据库表的列名 , property是对应实体类的属性名 -->
<result column="name" property="name"/>
<result column="pwd" property="password"/>
</resultMap>
<!--第一步-->
<!--手动映射,返回值类型为resultMap-->
<select id="selectUserById" resultMap="UserMap">
select id , name , pwd from user where id = #{id}
</select>