MyBatis关联查询(三、多对多查询)

MyBatis关联查询(三、多对多查询)

需求:查询角色及角色赋予的用户信息。

分析:一个用户可以拥有多个角色,一个角色也可以赋予多个用户,用户和角色为双向的一对多关系,多对多关系其实我们看成是双向的一对多关系。

在这里插入图片描述

user(uid, username):王贺、万通

​ user_role(uid, rid)

role(rid, ):校长、老师、学生

基础项目搭建参考第一个mybatis项目的创建和读取数据库信息,MyBatis关联查询(一、一对一查询),一对多查询

在上面项目的基础上先编写role表的pojo文件

public class Role {private Integer id;private String roleName;private String roleDesc;//多方private List<User> userList;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getRoleName() {return roleName;}public void setRoleName(String roleName) {this.roleName = roleName;}public String getRoleDesc() {return roleDesc;}public void setRoleDesc(String roleDesc) {this.roleDesc = roleDesc;}public List<User> getUserList() {return userList;}public void setUserList(List<User> userList) {this.userList = userList;}@Overridepublic String toString() {return "Role{" +"id=" + id +", roleName='" + roleName + '\'' +", roleDesc='" + roleDesc + '\'' +", userList=" + userList +'}';}
}

编写RoleMapper.java代码

public interface RoleMapper {Role getRoleById(Integer id);
}

在RoleMapper.xml中编写下列代码

<resultMap id="getRoleByIdResultMap" type="cn.fpl1116.pojo.Role"><id column="rid" property="id"></id><result column="role_name" property="roleName"></result><result column="role_desc" property="roleDesc"></result><!--一对多使用collection标签指定数据的封装规则property="userList":pojo的属性ofType="com.by.pojo.User":集合的泛型,等价于resultType--><collection property="userList" ofType="cn.fpl1116.pojo.User"><id column="id" property="id"></id><result column="username" property="username"></result><result column="address" property="address"></result><result column="sex" property="sex"></result><result column="birthday" property="birthday"></result></collection></resultMap><select id="getRoleById" parameterType="int" resultMap="getRoleByIdResultMap">SELECTr.id as rid,r.role_name,r.role_desc,u.*FROMuser_role urJOIN role r ON ur.rid=r.idJOIN user u ON ur.uid=u.idWHEREr.id=#{id}</select>

编写测试类

   @Testpublic void testGetRoleById(){RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class);Role role = roleMapper.getRoleById(1);System.out.println(role);}

运行结果如下:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/293814.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言——高精度除法

一、引子 1、引言 高精度除法相较于加减乘法更加复杂&#xff0c;它需要处理的因素更多&#xff0c;在这里我们先探讨高精度数除以低精度数&#xff0c;即大数除小数。这已满足日常所需&#xff0c;如需大数除以大数&#xff0c;可以使用专门的库&#xff0c;例如&#xff1a…

大创项目推荐 深度学习+opencv+python实现车道线检测 - 自动驾驶

文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络3.1卷积层3.2 池化层3.3 激活函数&#xff1a;3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV56 数据集处理7 模型训练8 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &am…

基于AE、VAE 和 VQ-VAE的图像生成

AE 是将数据映直接映射为数值code&#xff08;确定的数值&#xff09;&#xff0c;主要用于图像压缩与还原VAE是先将数据映射为分布&#xff0c;再从分布中采样得到数值code&#xff0c;主要用于图像生成。AQ-VAE是在原始VAE基础上多了一步Vector Quantization矢量量化操作&…

放心安全国产主食冻干猫粮有哪些牌子?分享十大放心猫粮国产名单

近几年&#xff0c;冻干猫粮在宠物圈内非常流行&#xff0c;许多品牌都推出了冻干猫粮。在所有的猫食品中&#xff0c;冻干无疑是最具营养、动物蛋白含量最高的食品之一。冻干作为现在宠物圈最火的猫食品&#xff0c;受到了众多猫友们的喜爱和追捧。但有些铲屎官在选择冻干猫粮…

仿悬赏猫任务平台源码 悬赏任务系统源码 带支付接口

源码介绍 最新仿悬赏猫任务平台源码 悬赏任务系统源码 带支付接口&#xff0c; 全新开发悬赏任务系统&#xff0c;功能齐全&#xff0c;包含接任务&#xff0c;发布任务&#xff0c; 店铺关注&#xff0c;置顶推荐&#xff0c;排行榜&#xff0c;红包大厅&#xff0c;红包抽奖…

一些问题/技巧的集合(仅个人使用)

目录 第一章、1.1&#xff09;前端找不到图片1.2&#xff09;1.3&#xff09;1.4&#xff09; 第二章、2.1&#xff09;2.2&#xff09;2.3&#xff09; 第三章、3.1&#xff09;3.2&#xff09;3.3&#xff09; 第四章、4.1&#xff09;4.2&#xff09;4.3&#xff09; 友情提…

MT6739/MTK6739安卓核心板规格参数_MTK平台核心板定制

安卓核心板采用联发科 MT6739 平台开发设计&#xff0c;搭载开放的智能 Android 操作系统。它集成 GPU PowerVR GE8100 570MHz&#xff0c;集成了 BASEBAND、UMCP、PMU 等核心器件&#xff0c;支持 2.4G5G 双频 WIFI(可支持 1*1 MIMO)、BLUETOOTH 近距离无线传输技术&#xff0…

12 数列的新顺序

分组后反转 #include <iostream> using namespace::std; using std::cout; using std::cin; int main() {int l,n;cin >> l;int nums[l];for(int i0; i<l; i){cin >> nums[i];}cin >> n;int t;for(int i0; i<l/n; i){for(int j0; j<n/2; j)…

蓝牙物联网与嵌入式开发如何结合?

蓝牙物联网与嵌入式开发可以紧密结合&#xff0c;以实现更高效、更智能的物联网应用。以下是一些结合的方式&#xff1a; 嵌入式开发为蓝牙设备提供硬件基础设施和控制逻辑&#xff1a;嵌入式系统可以利用微处理器和各种外设组成的系统&#xff0c;为蓝牙设备提供硬件基础设施和…

web网页端使用webSocket实现语音通话功能(SpringBoot+VUE)

写在前面 最近在写一个web项目&#xff0c;需要实现web客户端之间的语音通话&#xff0c;期望能够借助webSocket全双工通信的方式来实现&#xff0c;但是网上没有发现可以正确使用的代码。网上能找到的一个代码使用之后只能听到“嘀嘀嘀”的杂音 解决方案&#xff1a;使用Jso…

JMeter常见错误分析

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…

LTspice 电路仿真软件教程--基础篇

本文要干什么 介绍LTspice电路仿真软件的基础使用教程。 主角是谁&#xff0c;他有啥牛掰的地方 LTspice是一款高性能Spice III仿真软件、原理图采集和波形查看器&#xff0c;集成增强功能和模型&#xff0c;简化了开关稳压器的仿真。与常规Spice仿真器相比&#xff0c;我们…