创建表
用户实体类
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>
查询结果
=============================================================================================
这是一个比较复杂的一对多和一对一对应关系示例
用户表
部门表
角色表
用户角色对应表
<?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>