一、在开发过程当中经常会遇到一对多的这种关系具体怎么操作囊,上代码
<?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
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

