三表联查,collection一对多使用,association使用

 实体类



import java.util.Date;
import java.util.List;
import javax.validation.constraints.*;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;


/**
 * 用户对象 sys_user
 * 
 * @author 
 */
public class SysUser extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 用户ID */
    @Excel(name = "用户序号", cellType = ColumnType.NUMERIC, prompt = "用户编号")
    private String userId;

    /** 部门ID */
    @Excel(name = "部门编号", type = Type.IMPORT)
    private String deptId;

    /** 用户账号 */
    @Excel(name = "登录名称")
    private String userName;

    /** 用户昵称 */
    @Excel(name = "用户名称")
    private String nickName;

    /** 用户邮箱 */
    @Excel(name = "用户邮箱")
    private String email;

    /** 手机号码 */
    @Excel(name = "手机号码")
    private String phonenumber;

    /** 用户性别 */
    @Excel(name = "用户性别", readConverterExp = "0=男,1=女,2=未知")
    private String sex;

    /** 用户头像 */
    private String avatar;

    /** 密码 */
    private String password;

    /** 帐号状态(0正常 1停用) */
    @Excel(name = "帐号状态", readConverterExp = "0=正常,1=停用")
    private String status;

    /** 删除标志(0代表存在 2代表删除) */
    private String delFlag;

    /** 最后登录IP */
    @Excel(name = "最后登录IP", type = Type.EXPORT)
    private String loginIp;

    /** 最后登录时间 */
    @Excel(name = "最后登录时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT)
    private Date loginDate;

    /** 部门对象 */
    @Excels({
        @Excel(name = "部门名称", targetAttr = "deptName", type = Type.EXPORT),
        @Excel(name = "部门负责人", targetAttr = "leader", type = Type.EXPORT)
    })
    private SysDept dept;

    /** 角色对象 */
    private List<SysRole> roles;

    /** 角色组 */
    private String[] roleIds;

    /** 岗位组 */
    private String[] postIds;

    /** 角色ID */
    private String roleId;

    public SysUser()
    {

    }

    public SysUser(String userId)
    {
        this.userId = userId;
    }

    public String getUserId()
    {
        return userId;
    }

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

    public boolean isAdmin()
    {
        return isAdmin(this.userId);
    }

    public static boolean isAdmin(String userId)
    {
        return userId != null ;
    }

    public String getDeptId()
    {
        return deptId;
    }

    public void setDeptId(String deptId)
    {
        this.deptId = deptId;
    }

    @Xss(message = "用户昵称不能包含脚本字符")
    @Size(min = 0, max = 30, message = "用户昵称长度不能超过30个字符")
    public String getNickName()
    {
        return nickName;
    }

    public void setNickName(String nickName)
    {
        this.nickName = nickName;
    }

    @Xss(message = "用户账号不能包含脚本字符")
    @NotBlank(message = "用户账号不能为空")
    @Size(min = 0, max = 30, message = "用户账号长度不能超过30个字符")
    public String getUserName()
    {
        return userName;
    }

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

    @Email(message = "邮箱格式不正确")
    @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
    public String getEmail()
    {
        return email;
    }

    public void setEmail(String email)
    {
        this.email = email;
    }

    @Size(min = 0, max = 11, message = "手机号码长度不能超过11个字符")
    public String getPhonenumber()
    {
        return phonenumber;
    }

    public void setPhonenumber(String phonenumber)
    {
        this.phonenumber = phonenumber;
    }

    public String getSex()
    {
        return sex;
    }

    public void setSex(String sex)
    {
        this.sex = sex;
    }

    public String getAvatar()
    {
        return avatar;
    }

    public void setAvatar(String avatar)
    {
        this.avatar = avatar;
    }

    public String getPassword()
    {
        return password;
    }

    public void setPassword(String password)
    {
        this.password = password;
    }

    public String getStatus()
    {
        return status;
    }

    public void setStatus(String status)
    {
        this.status = status;
    }

    public String getDelFlag()
    {
        return delFlag;
    }

    public void setDelFlag(String delFlag)
    {
        this.delFlag = delFlag;
    }

    public String getLoginIp()
    {
        return loginIp;
    }

    public void setLoginIp(String loginIp)
    {
        this.loginIp = loginIp;
    }

    public Date getLoginDate()
    {
        return loginDate;
    }

    public void setLoginDate(Date loginDate)
    {
        this.loginDate = loginDate;
    }

    public SysDept getDept()
    {
        return dept;
    }

    public void setDept(SysDept dept)
    {
        this.dept = dept;
    }

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

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

    public String[] getRoleIds()
    {
        return roleIds;
    }

    public void setRoleIds(String[] roleIds)
    {
        this.roleIds = roleIds;
    }

    public String[] getPostIds()
    {
        return postIds;
    }

    public void setPostIds(String[] postIds)
    {
        this.postIds = postIds;
    }

    public String getRoleId()
    {
        return roleId;
    }

    public void setRoleId(String roleId)
    {
        this.roleId = roleId;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("userId", getUserId())
            .append("deptId", getDeptId())
            .append("userName", getUserName())
            .append("nickName", getNickName())
            .append("email", getEmail())
            .append("phonenumber", getPhonenumber())
            .append("sex", getSex())
            .append("avatar", getAvatar())
            .append("password", getPassword())
            .append("status", getStatus())
            .append("delFlag", getDelFlag())
            .append("loginIp", getLoginIp())
            .append("loginDate", getLoginDate())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .append("dept", getDept())
            .toString();
    }
}

 xml

<resultMap type="SysUser" 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="SysDept" resultMap="deptResult" />
        <collection  property="roles"   column="role_id" javaType="java.util.List"           resultMap="RoleResult" />
    </resultMap>
	
    <resultMap id="deptResult" type="SysDept">
        <id     property="deptId"    column="dept_id"     />
        <result property="parentId"  column="parent_id"   />
        <result property="deptName"  column="dept_name"   />
        <result property="ancestors" column="ancestors"   />
        <result property="orderNum"  column="order_num"   />
        <result property="leader"    column="leader"      />
        <result property="status"    column="dept_status" />
    </resultMap>
	
    <resultMap id="RoleResult" type="SysRole">
        <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"    />
    </resultMap>
	
    
    <select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
		select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader,c.role_id,b.role_name from sys_user u
		left join sys_dept d on u.dept_id = d.dept_id left join sys_user_role c on u.user_id=c.user_id left join sys_role b on c.role_id = b.role_id
		where u.del_flag = '0'
		<if test="userId != null and userId != ''">
			AND u.user_id = #{userId}
		</if>
		<if test="userName != null and userName != ''">
			AND u.user_name like concat('%', #{userName}, '%')
		</if>
		<if test="status != null and status != ''">
			AND u.status = #{status}
		</if>
		<if test="phonenumber != null and phonenumber != ''">
			AND u.phonenumber like concat('%', #{phonenumber}, '%')
		</if>
		<if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
			AND date_format(u.create_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
		</if>
		<if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
			AND date_format(u.create_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
		</if>
		<if test="deptId != null and deptId != ''">
			AND (u.dept_id = #{deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{deptId}, ancestors) ))
		</if>
		<!-- 数据范围过滤 -->
		${params.dataScope}
	</select>

 输出结果:

{
    "code": 0,
    "msg": "成功",
    "data": [
        {
            "nickName": "测试1",
            "sex": "1",
            "roles": [
                {
                    "deptCheckStrictly": false,
                    "flag": false,
                    "roleId": "1",
                    "menuCheckStrictly": false,
                    "roleName": "超级管理员",
                    "admin": true
                },
                {
                    "deptCheckStrictly": false,
                    "flag": false,
                    "roleId": "2",
                    "menuCheckStrictly": false,
                    "roleName": "普通角色",
                    "admin": true
                }
            ],
            "deptId": "103",
            "phonenumber": "15888888888",
            "loginDate": "2023-07-11T09:23:21.000+08:00",
            "admin": true,
            "remark": "管理员",
            "avatar": "",
            "dept": {
                "deptName": "研发部门",
                "leader": "测试1",
                "children": [],
                "deptId": "103"
            },
            "userName": "admin",
            "delFlag": "0",
            "userId": "1",
            "createBy": "admin",
            "createTime": "2023-07-10 16:51:52",
            "loginIp": "127.0.0.1",
            "email": "ces1@163.com",
            "status": "0"
        },
        {
            "nickName": "李四",
            "sex": "1",
            "roles": [
                {
                    "deptCheckStrictly": false,
                    "flag": false,
                    "roleId": "2",
                    "menuCheckStrictly": false,
                    "roleName": "普通角色",
                    "admin": true
                }
            ],
            "deptId": "105",
            "phonenumber": "15666666666",
            "loginDate": "2023-07-10T14:12:18.000+08:00",
            "admin": true,
            "remark": "测试员",
            "avatar": "",
            "dept": {
                "deptName": "测试部门",
                "leader": "测试1",
                "children": [],
                "deptId": "105"
            },
            "userName": "ls",
            "delFlag": "0",
            "userId": "2",
            "createBy": "admin",
            "createTime": "2023-07-10 16:51:52",
            "loginIp": "127.0.0.1",
            "email": "ls@qq.com",
            "status": "0"
        },
        {
            "nickName": "ww",
            "sex": "0",
            "roles": [
                {
                    "deptCheckStrictly": false,
                    "flag": false,
                    "roleId": "1",
                    "menuCheckStrictly": false,
                    "roleName": "超级管理员",
                    "admin": true
                }
            ],
            "deptId": "0001",
            "phonenumber": "",
            "loginDate": "2023-07-10T15:39:41.000+08:00",
            "admin": true,
            "avatar": "",
            "dept": {
                "deptName": "技术部",
                "children": [],
                "deptId": "0001"
            },
            "userName": "ww",
            "delFlag": "0",
            "userId": "2f73b4ad816840ac996d32d29f0124ed",
            "createBy": "admin",
            "createTime": "2023-06-15 14:24:17",
            "loginIp": "127.0.0.1",
            "email": "",
            "status": "0"
        },
        {
            "nickName": "kb",
            "sex": "0",
            "roles": [],
            "deptId": "103",
            "phonenumber": "",
            "loginDate": "2023-07-10T15:33:29.000+08:00",
            "admin": true,
            "avatar": "",
            "dept": {
                "deptName": "研发部门",
                "leader": "测试1",
                "children": [],
                "deptId": "103"
            },
            "userName": "kb",
            "delFlag": "0",
            "userId": "3",
            "createBy": "admin",
            "createTime": "2023-06-14 15:08:28",
            "loginIp": "127.0.0.1",
            "email": "",
            "status": "0"
        },
        {
            "nickName": "zl",
            "sex": "0",
            "roles": [
                {
                    "deptCheckStrictly": false,
                    "flag": false,
                    "roleId": "1",
                    "menuCheckStrictly": false,
                    "roleName": "超级管理员",
                    "admin": true
                }
            ],
            "deptId": "0002",
            "phonenumber": "",
            "loginDate": "2023-06-21T10:09:39.000+08:00",
            "admin": true,
            "avatar": "",
            "dept": {
                "deptName": "生产车间",
                "children": [],
                "deptId": "0002"
            },
            "userName": "zl",
            "delFlag": "0",
            "userId": "8f6cfa5457534e0ebb14e496af9f1ac6",
            "createBy": "admin",
            "createTime": "2023-06-15 14:27:31",
            "loginIp": "127.0.0.1",
            "email": "",
            "status": "0"
        },
        {
            "nickName": "mq",
            "sex": "0",
            "roles": [],
            "deptId": "0001",
            "phonenumber": "",
            "loginDate": "2023-07-10T11:45:30.000+08:00",
            "admin": true,
            "avatar": "",
            "dept": {
                "deptName": "技术部",
                "children": [],
                "deptId": "0001"
            },
            "userName": "mq",
            "delFlag": "0",
            "userId": "9397e0df41724492b9c1c0e0b4198f17",
            "createBy": "admin",
            "createTime": "2023-06-16 14:57:04",
            "loginIp": "127.0.0.1",
            "email": "",
            "status": "0"
        }
    ]
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值