Mybatis中的ResultMap的用法

        前提:有时候在我们创建数据库中的字段名和所对应的实体类中的属性名会出现不一致的情况,这时候在进行相关操作的时候就会出现错误,现在来看看解决方法。

数据库中的字段名:

        

 实体类:

        这里的pwd与password名称不同。

       进行查询的方法:

//根据name查询用户
User getUserByName(String name);

       

xml文件:

<select id="getUserByName"  resultType="user">
    select name,id,pwd  from mybatis.user where name=#{name};
</select>

数据库中的数据:

        

测试方法:

public void testInsert(){
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    String name = "father";
    User user = mapper.getUserByName(name);
    System.out.println(user);
    sqlSession.close();
}

        此时查出来的结果是:

 明显的看到,密码为null,而不是原表中的wilt

解决方式1:起别名

        通过给pwd起别名为password的方式,可以得到原有的密码.

修改后的xml文件的代码:

<select id="getUserByName"  resultType="user">
    select name,id,pwd as password from mybatis.user where name=#{name};
</select>

        此时的结果:

密码已经正确显示。

解决方式2:

        在select等标签中,存在着resultMap这一选项

         当我们使用resultMap时,可以避免使用起别名的方法。resultMap的用法是:在resultMap=" "中间给此resultMap起一个名字,接着,在Mapper所对应的配置文件中,添加resultMap这一标签:

标签中的id就为你所起的名字,type则填入返回对象的类。resultMap中的属性如上图填入即可。

        此时的xml:

<resultMap id="UserMap" type="user">
    <!--column:数据库中的字段名 property:实体类中的属性-->
    <result column="pwd" property="password"></result>
</resultMap>
<select id="getUserByName"  resultMap="UserMap">
    select name,id,pwd  from mybatis.user where name=#{name};
</select>

 结果:

        总结: 

1.数据库中的字段名和实体类的属性名不同时,可以采用起别名resultMap进行处理,推荐后者

2.使用resultMap时就不能使用resultType,两者不可同时出现

3.一个resultMap可以“绑定”多个方法

 

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值