ResultType和ResultMap都是执行查询语句时返回的结果集
ResultType
ResultType相对与ResultMap而言更简单一点。只有满足ORM(Object Relational Mapping,对象关系映射)时,即数据库表中的字段名和实体类中的属性完全一致时,才能使用,否则会出现数据不显示的情况。如图所示,由于实体类Order的属性和表tb_order的字段不一致,导致页面数据不显示。
![](https://img-blog.csdnimg.cn/20190304141833768.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDMwNjAwNQ==,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20190304141842336.png)
![](https://img-blog.csdnimg.cn/20190304141845824.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDMwNjAwNQ==,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20190304141850823.png)
ResultMap
ResultMap和ResultType的功能类似,但是ResultMap更强大一点,ResultMap可以实现将查询结果映射为复杂类型的pojo。
如上图的ResultType显示的结果,用ResultMap就可以解决。
![](https://img-blog.csdnimg.cn/20190306092809284.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDMwNjAwNQ==,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20190306092834272.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDMwNjAwNQ==,size_16,color_FFFFFF,t_70)
说明:
- ResultMap标签的id属性是唯一的,和select标签的resultMap一致。
- type属性是pojo(普通的JavaBean对象)的包名加类名,用来封装信息。如果mybatis里面配置了别名包,也就是给包起别名,那么type里面直接写类名就可以了。
mybatis配置文件 - ResultMap中的id标签是用来描述表中的主键的对应关系,column用来描述数据库表中的主键字段名,property用来描述pojo中的属性名。
- result标签是用来描述表中的普通字段的对应关系,column用来描述数据库表中的普通字段名,property用来描述pojo中的属性名。
- association标签用来实现一对一的关系
- collection标签用来实现一对多的关系