解决实体类中属性名字和字段名字不一致的问题
解决方法一:
- 在SQL语言中直接写别名
select id, name,pwd as password from mybatis.user where id = #{id}
-- 直接在查询条件中用as语句写死了
解决方法二:
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="getUserById" resultMap="UserMap" >
SELECT id,name,pwd FROM mybatis.user where id = #{id}
</select>
-
resultMap
元素是 MyBatis 中最重要最强大的元素 -
ResultMap 的设计思想是,对于简单的语句根本不需要配置显式的结果映射,而对于复杂一点的语句只需要描述它们的关系就行了。
-
这些情况下,MyBatis 会在幕后自动创建一个
ResultMap
,再基于属性名来映射列到 JavaBean 的属性上。如果列名和属性名没有精确匹配,可以在 SELECT 语句中对列使用别名(这是一个基本的 SQL 特性)来匹配标签。 -
ResultMap
最优秀的地方在于,虽然你已经对它相当了解了,但是根本就不需要显式地用到他们。 上面这些简单的示例根本不需要下面这些繁琐的配置。 但出于示范的原因,让我们来看看最后一个示例中,如果使用外部的resultMap
会怎样,这也是解决列名不匹配的另外一种方式。