mybatis返回map结果集_Mybatis之ResultMap结果集映射

所谓结果集映射,解决属性名和字段名不一致的问题。具体操作如下:首先新建一个模块,命名为mybatis-03,同之前一样,我们新建一个和mybatis-01一模一样的模块。其次我们将实体类User中的变量,由“pwd”人为修改为“password”,然后重新生成无参/全参构造方法、Getter、Setter、toString方法等方法。在测试类中我们来测试查询,我们使用getUserById()方法,来通过ID实现查找该用户全部信息的功能。

76b23079cc33de45f9e135c9c198e38c.png

如此运行之后,结果为如下: e1435bfe9bf7cfab9a03418e8731acfe.png我们发现,这样的查询只查出来了id以及name,而password没有查询出来,分析原因我们大致可以了解到,由于我们在User实体类中修改了其中的变量,而在UserMapper配置文件中,select *from user where id = #{id}可以看做 select id,name,pwdfrom user where id = #{id}会去User实体类中找属性pwd,但是实体类User中没有该属性,所以找不到自然是返回null值,这是我们所找出来的原因。接下来给出解决方案:较为笨拙的解决方法为:将select id,name,pwd from user where id = #{id}语句修改为select id,name,pwdas password from user where id = #{id},这样可以解决,意思是将寻找到的结果,转化为别名password,与实体类User对应起来就可以找到了,但是这样的方法较为笨拙,没有实际意义,所以,我们接下来介绍另外一种解决方案,由此, ResultMap结果集映射便诞生了。详细介绍如下:再次描述问题症结所在【即数据库为pwd,而实体类属性定义为password,有冲突】,解决为如下: 原本为:

5ddd5d7db610d94e56333a758243c4dd.png

改后为:在select语句中后加入resultMap结果集映射,随便命名,我们命名为UserMap,然后在其上分对结果集resultMap进行解释,将id中的UserMap指向type中的pojo.User,这样又绕回来了,实际还是相当于getUserById指向pojo.User,只不过在中间加入了resultMap结果集映射的相关内容。

df0a06103d2e21f5c8a5fa836fa81d5a.png

在该结果集映射中,我们编写实体类属性与数据库字段名的匹配关系,如上图所示,column为数据库中的字段名,property为实体类中的属性名。属性名与字段名哪条不一致在这里匹配哪条即可,在我们本例当中,实体类属性名password与数据库字段名pws不匹配,所以在此处我们进行匹配,使用语句:column="pwd" property="password"/>

如此一来,数据库中的字段名pws即与实体类中的属性名password相匹配了。再次操作测试类进行测试,即可顺利查找相关内容了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值