Mybatis配置一对一,一对多,多对多

创建表

用户实体类

import javax.persistence.*;
import java.util.List;

public class TestUser {
    private Integer userId;

    private String userName;

    private List<TestRole> roles;

    public List<TestRole> getRoles() {
        return roles;
    }

    public void setRoles(List<TestRole> roles) {
        this.roles = roles;
    }

    /**
     * @return user_id
     */
    public Integer getUserId() {
        return userId;
    }

    /**
     * @param userId
     */
    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    /**
     * @return user_name
     */
    public String getUserName() {
        return userName;
    }

    /**
     * @param userName
     */
    public void setUserName(String userName) {
        this.userName = userName;
    }
}

角色实体类

public class TestRole {
    private Integer roleId;

    private String roleName;

    private Integer userId;

    /**
     * @return role_id
     */
    public Integer getRoleId() {
        return roleId;
    }

    /**
     * @param roleId
     */
    public void setRoleId(Integer roleId) {
        this.roleId = roleId;
    }

    /**
     * @return role_name
     */
    public String getRoleName() {
        return roleName;
    }

    /**
     * @param roleName
     */
    public void setRoleName(String roleName) {
        this.roleName = roleName;
    }

    /**
     * @return user_id
     */
    public Integer getUserId() {
        return userId;
    }

    /**
     * @param userId
     */
    public void setUserId(Integer userId) {
        this.userId = userId;
    }
}

TestUserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wulianwang.manage.mapper.system.TestUserMapper">
  <resultMap id="BaseResultMap" type="com.wulianwang.manage.model.dbentity.system.test.TestUser">
    <!--
      WARNING - @mbg.generated
 -->
    <id column="user_id" jdbcType="INTEGER" property="userId" />
    <result column="user_name" jdbcType="VARCHAR" property="userName" />

    <collection property="roles" ofType="com.wulianwang.manage.model.dbentity.system.test.TestRole" column="useriId">
      <id column="role_id" property="roleId" jdbcType="INTEGER" />
      <result column="role_name" property="roleName" jdbcType="VARCHAR" />
    </collection>
  </resultMap>
  <sql id="Base_Column_List">
    <!--
      WARNING - @mbg.generated
    -->
    user_id, user_name
  </sql>


  <select id="selectList" resultMap="BaseResultMap">
    SELECT u.*,r.*
    FROM  test_user u,test_role r
    WHERE u.user_id = r.user_id
  </select>
</mapper>

查询结果

扫描二维码关注公众号,回复: 13140324 查看本文章

=============================================================================================

这是一个比较复杂的一对多和一对一对应关系示例

用户表

部门表

角色表

用户角色对应表

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.manage.module.system.mapper.UserMapper">
    <resultMap type="User" id="SysUserResult">
       <id property="userId" column="user_id"/>
        <result property="deptId" column="dept_id"/>
        <result property="userName" column="user_name"/>
        <result property="nickName" column="nick_name"/>
        <result property="email" column="email"/>
        <result property="phonenumber" column="phonenumber"/>
        <result property="sex" column="sex"/>
        <result property="avatar" column="avatar"/>
        <result property="password" column="password"/>
        <result property="status" column="status"/>
        <result property="delFlag" column="del_flag"/>
        <result property="loginIp" column="login_ip"/>
        <result property="loginDate" column="login_date"/>
        <result property="createBy" column="create_by"/>
        <result property="createTime" column="create_time"/>
        <result property="updateBy" column="update_by"/>
        <result property="updateTime" column="update_time"/>
        <result property="remark" column="remark"/>
        <association property="dept" column="dept_id" javaType="Dept" resultMap="deptResult"/>
        <collection property="roles" javaType="java.util.List" resultMap="RoleResult"/>
        <collection property="posts" javaType="java.util.List" resultMap="PostResult"/>
    </resultMap>

    <resultMap id="deptResult" type="Dept">
        <id property="deptId" column="dept_id"/>
        <result property="parentId" column="parent_id"/>
        <result property="deptName" column="dept_name"/>
        <result property="orderNum" column="order_num"/>
        <result property="leader" column="leader"/>
        <result property="status" column="dept_status"/>
    </resultMap>


    <resultMap id="RoleResult" type="Role">
        <id property="roleId" column="role_id"/>
        <result property="roleName" column="role_name"/>
        <result property="roleKey" column="role_key"/>
        <result property="roleSort" column="role_sort"/>
        <result property="dataScope" column="data_scope"/>
        <result property="status" column="role_status"/>
        <result property="roleType" column="role_type"/>
        <collection property="roleDepts" javaType="java.util.List" resultMap="RoleDeptResult"/>
    </resultMap>

    <resultMap id="RoleDeptResult" type="RoleDept">
        <result property="deptId" column="role_deptId" />
    </resultMap>

    <resultMap id="PostResult" type="Post">
        <id property="postId" column="post_id"/>
        <result property="postCode" column="post_code"/>
        <result property="postName" column="post_name"/>
        <result property="postSort" column="post_sort"/>
        <result property="status" column="post_status"/>
    </resultMap>

    <sql id="selectUserVo">
        select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber,
        u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
        d.dept_id, d.parent_id, d.dept_name, d.order_num, d.leader, d.status as dept_status,
       r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status, r.role_type,
        rd.dept_id as role_deptId, p.post_id,p.post_code, p.post_name, p.post_sort, p.status as post_status
        from sys_user u
		    left join sys_dept d on u.dept_id = d.dept_id
		    left join sys_user_role ur on u.user_id = ur.user_id
		    left join sys_role r on r.role_id = ur.role_id
		    left join sys_role_dept rd on r.role_id = rd.role_id
		    left join sys_user_post up on u.user_id = up.user_id
		    left join sys_post p on up.post_id = p.post_id
   </sql>

    <select id="loginByName" parameterType="String" resultMap="SysUserResult">
        <include refid="selectUserVo"/>
        where u.user_name = #{userName}
    </select>


</mapper>

猜你喜欢

转载自blog.csdn.net/qq_38279833/article/details/105661985