mybatis多对多映射

数据库里面有角色实体类app_cms_role

权限实体类app_cms_right

以及一张中间表app_cms_role_right

建立对应的实体类AppCmsRole

package com.qianlong.cms.entity;

import java.util.Date;
import java.util.Set;

public class AppCmsRole {
    private Integer id;

    private String name;

    private Date createTime;

    private Date updateTime;

    private Integer appId;

    private String roleName;

    private String rolePrivilege;

    private Set<AppCmsRight> rightSet;

    public Set<AppCmsRight> getRightSet() {
        return rightSet;
    }

    public void setRightSet(Set<AppCmsRight> rightSet) {
        this.rightSet = rightSet;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name == null ? null : name.trim();
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    public Integer getAppId() {
        return appId;
    }

    public void setAppId(Integer appId) {
        this.appId = appId;
    }

    public String getRoleName() {
        return roleName;
    }

    public void setRoleName(String roleName) {
        this.roleName = roleName == null ? null : roleName.trim();
    }

    public String getRolePrivilege() {
        return rolePrivilege;
    }

    public void setRolePrivilege(String rolePrivilege) {
        this.rolePrivilege = rolePrivilege == null ? null : rolePrivilege.trim();
    }

    @Override
    public String toString() {
        return "AppCmsRole [id=" + id + ", name=" + name + ", createTime=" + createTime + ", updateTime=" + updateTime
                + ", appId=" + appId + ", roleName=" + roleName + ", rolePrivilege=" + rolePrivilege + ", rightSet="
                + rightSet + "]";
    }

}

实体类AppCmsRight.java

package com.qianlong.cms.entity;

public class AppCmsRight {
    private Integer id;

    private String name;

    private Integer pid;

    private String url;

    private Short type;

    private Short organization;

    /* private List<AppCmsRole> rolesList; */

    public Integer getPid() {
        return pid;
    }

    public void setPid(Integer pid) {
        this.pid = pid;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url == null ? null : url.trim();
    }

    public Short getType() {
        return type;
    }

    public void setType(Short type) {
        this.type = type;
    }

    public Short getOrganization() {
        return organization;
    }

    public void setOrganization(Short organization) {
        this.organization = organization;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "AppCmsRight [id=" + id + ", name=" + name + ", pid=" + pid + ", url=" + url + ", type=" + type
                + ", organization=" + organization + "]";
    }

}

对应的xml

<resultMap id="BaseResultMap" type="com.qianlong.cms.entity.AppCmsRole">
        <id column="id" property="id" jdbcType="INTEGER" />
        <result column="name" property="name" jdbcType="VARCHAR" />
        <result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
        <result column="update_time" property="updateTime" jdbcType="TIMESTAMP" />
        <result column="app_id" property="appId" jdbcType="INTEGER" />
        <result column="role_name" property="roleName" jdbcType="VARCHAR" />
        <result column="role_privilege" property="rolePrivilege"
            jdbcType="VARCHAR" />
    </resultMap>
    <resultMap id="RoleRgiht" type="com.qianlong.cms.entity.AppCmsRole"
        extends="BaseResultMap">
        <collection property="rightSet" javaType="java.util.Set"<!-- 实体类里面如果是listjavaType就写成java.util.List-->
            ofType="com.qianlong.cms.entity.AppCmsRight">
            <id column="righrId" property="id" jdbcType="INTEGER" />
            <result column="rightName" property="name" jdbcType="VARCHAR" /><!--查询出来的id与role里面的重复,所以改写成别名,防止查询冲突-->
            <result column="pid" property="pid" jdbcType="INTEGER" />
            <result column="url" property="url" jdbcType="VARCHAR" />
            <result column="type" property="type" jdbcType="SMALLINT" />
            <result column="organization" property="organization"
                jdbcType="SMALLINT" />
        </collection>
    </resultMap>

<select id="selectRolePage" parameterType="HashMap" resultMap="RoleRgiht">
        select
        ro.id, ro.name, ro.create_time, ro.update_time, ro.app_id,
        ro.role_name,
        ro.role_privilege,ri.id as rightId,ri.name as
        rightName,ri.pid,ri.url,ri.type,ri.organization
        from app_cms_role ro
        left join app_cms_role_right rr on ro.id=rr.role_id
        left join
        app_cms_right ri on ri.id=rr.right_id
</selecy>
原文地址:https://www.cnblogs.com/plf112233/p/4164220.html