【MyBatis】resultType与类的字段不同解决办法

问题描述:
如果你的实体类的字段写的是

public class User {
    
    private int id;
    private String name;
    private String password;
}

但是你的数据库的表结构为

id  name  pwd

这样在进行mapper映射的时候

就会password读不出来pwd的值。

解决办法:

(1)通过SQL语句给password起别名,显式将pwd转为password

<select id="getUserById" resultType="com.kuang.pojo.User">
    select id,name,pwd as password from mybatis.user where id = #{id}
</select>

(2)进行结果集的映射

自定义一个新的类型UserMap

将User的各个字段赋给UserMap,但将pwd改为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 * from mybatis.user where id = #{id}
</select>
  • resultMap 元素是 MyBatis 中最重要最强大的元素

  • ResultMap 的设计思想是,对于简单的语句根本不需要配置显式的结果映射,而对于复杂一点的语句只需要描述它们的关系就行了。

  • ResultMap 最优秀的地方在于,虽然你已经对它相当了解了,但是根本就不需要显式地用到他们。

  • 如果世界总是这么简单就好了。

原文地址:https://www.cnblogs.com/cckong/p/14321611.html