一、在开发过程当中经常会遇到一对多的这种关系具体怎么操作囊,上代码

<?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.sjy.studyenglish.mapper.SysUsersMapper">

    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.sjy.studyenglish.entity.SysUsers">
        <id column="id" property="id" />
        <result column="nickname" property="nickname" />
        <result column="username" property="username" />
        <result column="password" property="password" />
        <result column="salt" property="salt" />
        <result column="role_id" property="roleId" />
        <result column="locked" property="locked" />
        <result column="create_time" property="createTime" />
        <collection property="sysRoles"  column="id" select="findRolesById"></collection>
    </resultMap>

    <select id="findRolesById" resultType="com.sjy.studyenglish.entity.SysRoles">
        select sr.id,sr.role,sr.description,sr.pid,sr.available
        from sys_roles sr,sys_users_roles sur,sys_users su
        where sr.id = sur.role_id
        and su.id = sur.user_id
        and su.id = #{id}
    </select>
</mapper>
package com.sjy.studyenglish.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.ibatis.annotations.Select;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.List;
import java.util.Set;

/**
 * <p>
 * 
 * </p>
 *
 * @author 石嘉懿
 * @since 2020-09-01
 */
@AllArgsConstructor //生成全参数构造函数
@NoArgsConstructor//生成无参构造函数
@Data
@TableName(resultMap = "BaseResultMap")
public class SysUsers implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 编号
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 用户昵称
     */
    private String nickname;

    /**
     * 用户名
     */
    @NotNull(message = "用户名不能为空")
    @Length(min = 6, max = 10, message = "用户名长度为6~10位")
    private String username;

    /**
     * 密码(需加密)
     */
    @NotNull(message = "密码不能为空")
    @Length(min = 6, max = 12, message = "密码长度为6~12位")
    private String password;

    /**
     * 盐值(因为密码是经过Shiro加密的,需要通过盐值校验,由Shiro生成,不需要用户手动填写)
     */
    private String salt;

    /**
     * 角色列表(这个字段不是必须的,仅实现在展示用户信息的时候能同时展示用户当前角色)
     */
    private String roleId;

    /**
     * 是否锁定(决定当前账户是否是锁定的)
     */
    private Boolean locked;

    /**
     * 注册时间
     */
    private LocalDateTime createTime;

    /**
     * 一个用户可以有多个角色
     */
    //一对多
    @TableField(exist = false)//表示该属性不为数据库表字段,但又是必须使用的*/
    private List<SysRoles> sysRoles;
}

 

package com.sjy.studyenglish.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;
import java.util.Set;

/**
 * <p>
 * 
 * </p>
 *
 * @author 石嘉懿
 * @since 2020-09-01
 */
@AllArgsConstructor //生成全参数构造函数
@NoArgsConstructor//生成无参构造函数
@Data
public class SysRoles implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 角色编号
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 角色名称
     */
    private String role;

    /**
     * 角色描述
     */
    private String description;

    /**
     * 父节点(当前的角色可能有上级节点)
     */
    private Long pid;

    /**
     * 是否锁定
     */
    private Boolean available;

    /**
     * 一个角色有多个权限
     */
    @TableField(exist = false)
    private List<SysPermissions> sysPermissions;
}
package com.sjy.studyenglish.mapper;

import com.sjy.studyenglish.entity.SysRoles;
import com.sjy.studyenglish.entity.SysUsers;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;

import java.util.Set;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author 石嘉懿
 * @since 2020-09-01
 */
@Mapper
public interface SysUsersMapper extends BaseMapper<SysUsers> {

    Set<SysRoles> findRolesById(String id);
}

二、结果

sysUsers.toString() = SysUsers(id=1, nickname=石嘉懿, username=1364913249, password=1234567, salt=administrator, roleId=null, locked=false, createTime=2020-09-01T15:34:10, sysRoles=[SysRoles(id=1, role=admin, description=管理员, pid=null, available=false, sysPermissions=null)])

 

最后修改于 2020-09-03 09:51:59
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付
上一篇