resultMap映射结果集编写

当我们去写多表关联查询的sql,通常会映射出一个非常复杂的结果,如果我们使用Mybatis框架,那么就得使用resultMap去编写映射,这让我们非常头疼,经过我的总结得出了比较简单的步骤。
拿一个真实项目开发中的案例:
1.先去编写映射数据库查询结果集的java bean如下

package com.xdja.atecs.pojo;

public class ContactEntry {
private Integer contactType ;
private String contactValue ;

public Integer getContactType() {
return contactType ;
}

public void setContactType(Integer contactType) {
this . contactType = contactType;
}

public String getContactValue() {
return contactValue ;
}

public void setContactValue(String contactValue) {
this . contactValue = contactValue;
}
}
看到这个不要觉得太简单,下面才是我们真正要映射的结果集:
package com.xdja.atecs.pojo;

import com.xdja.atecs.util.Utils;

import java.util.List;

public class MemberExtend {
private String userId ;
private List<Integer> deptIds ;
private String userName ;
private Integer operateStatus ;
private long operateSerial ;
private List<Integer> identitysIds ;
private List<ContactEntry> contactEntries ;

public String getUserId() {
return userId ;
}

public void setUserId(String userId) {
this . userId = userId;
}

public List<Integer> getDeptIds() {
return deptIds ;
}

public void setDeptIds(List<Integer> deptIds) {
this . deptIds = deptIds;
}

public String getUserName() {
return userName ;
}

public void setUserName(String userName) {
this . userName = userName;
}

public Integer getOperateStatus() {
return operateStatus ;
}

public void setOperateStatus(Integer operateStatus) {
this . operateStatus = operateStatus;
}

public long getOperateSerial() {
return operateSerial ;
}

public void setOperateSerial( long operateSerial) {
this . operateSerial = operateSerial;
}

public List<Integer> getIdentitysIds() {
return identitysIds ;
}

public void setIdentitysIds(List<Integer> identitysIds) {
this . identitysIds = identitysIds;
}

public List<ContactEntry> getContactEntries() {
return contactEntries ;
}

public void setContactEntries(List<ContactEntry> contactEntries) {
this . contactEntries = contactEntries;
}
}
2.下面说明resultMap一看就懂:
< resultMap id ="memberExtend" type ="com.xdja.atecs.pojo.MemberExtend" >
<!-- column对应数据库的字段,property对应java bean的变量名称-->
< result column ="userId" property ="userId" /> <!--对应 MemberExtend 的userId变量-->
< result column ="userName" property ="userName" /> <!--对应 MemberExtend 的userName变量-->
< result column ="operateStatus" property ="operateStatus" /> <!--对应 MemberExtend 的operateStatus变量-->
< result column ="operateSerial" property ="operateSerial" /> <!--对应 MemberExtend 的operateSerial变量-->
<!--对应 MemberExtend 的deptIds变量,collection标签相当于集合,ofType相当于集合泛型的具体类型,表示集合里每个元素的类型-->
< collection property ="deptIds" ofType ="java.lang.Integer" >
< result property ="deptId" column ="deptId" />
</ collection >
<!--对应 MemberExtend 的identitysIds变量-->
< collection property ="identitysIds" ofType ="java.lang.Integer" >
< result property ="identitysId" column ="identitysId" />
</ collection >
< !--对应 MemberExtend 的contactEntries变量,一个java bean类型集合,还是相同的道理-->
< collection property ="contactEntries" ofType ="com.xdja.atecs.pojo.ContactEntry" >
< result property ="contactType" column ="contactType" />
< result property ="contactValue" column ="contactValue" />
</ collection >
</ resultMap >
虽然说得很清楚,但还可能有疑问如果 MemberExtend结果集包装的不是List而是单个的java bean该如何映射。和collection标签大同小异, 使用 association 标签,用法几乎相同

猜你喜欢

转载自blog.csdn.net/lkwan123/article/details/80328487