在ibatis中对象关系映射是需要自己动手配置的,这点不如hibernate,下面是一个简单的例子:
首先是两个普通的javaBean:
</pre><pre name="code" class="java">/**
* 用户角色菜单entity
* @author mac
*
*/
public class ParentMenu {
private String parentName;//父菜单名称
private Integer parentId;//父菜单id
private List<SubMenu> subMenuLs;//子菜单集合
public String getParentName() {
return parentName;
}
public void setParentName(String parentName) {
this.parentName = parentName;
}
public Integer getParentId() {
return parentId;
}
public void setParentId(Integer parentId) {
this.parentId = parentId;
}
public List<SubMenu> getSubMenuLs() {
return subMenuLs;
}
public void setSubMenuLs(List<SubMenu> subMenuLs) {
this.subMenuLs = subMenuLs;
}
}
/**
* 用户角色子菜单entity
* @author mac
*
*/
public class SubMenu {
private String subName;//子菜单名称
private Integer subId;//子菜单id
public String getSubName() {
return subName;
}
public void setSubName(String subName) {
this.subName = subName;
}
public Integer getSubId() {
return subId;
}
public void setSubId(Integer subId) {
this.subId = subId;
}
}
下面是ibatis.xml里面的配置:
<resultMap class="com.ideal.client.palmhospital.entity.doctor.ParentMenu" id="ParentMenuMap" groupBy="parentId">
<result property="parentName" column="PARENTNAME"/>
<result property="parentId" column="PARENTID"/>
<result property="subMenuLs" resultMap="ibatis-mobileMenu.subMenuMap"/>
</resultMap>
<resultMap class="com.ideal.client.palmhospital.entity.doctor.SubMenu" id="subMenuMap">
<result property="subName" column="SUBNAME"/>
<result property="subId" column="SUBID"/>
</resultMap>
在ParentMenuMap中的groupBy属性的值对应的是javaBean的属性,意思是根据对应的属性分组;
下面是sql语句:
<select id="MobileMenu.queryParentMenu" resultMap="ParentMenuMap" parameterClass="java.lang.String">
select c.menu_name PARENTNAME,d.menu_parent_id PARENTID,c.id,d.menu_name SUBNAME,d.id SUBID from user_mobile_role a, mobile_role_menu b,mobile_menu c,mobile_menu d
where a.mobile_role_id = b.mobile_role_id
and b.mobile_menu_id = d.id
and a.user_id = #userId#
and d.menu_parent_id=c.id
order by d.id
</select>
这样配置完成后,一对多的关系就配置好了