一对多,多对多查询

1. 一对多配置

1. 什么是一对多
如用户表和订单表,
单个用户可能有多个订单,即一对多。如班级表和学生表
一个班级有多个学生,学生表的外键为
班级表的主键。
  • 如下面就是一对多,查询用户对应的订单配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="cn.bitqian.dao.UserMapper"><!-- 查询user 和订单对应的列 --><resultMap id="userAndOrderMap" type="User"><id property="userId" column="userid"/><result property="userName" column="username"/><result property="userPassword" column="userpassword"/><result property="birthday" column="birthday"/><!-- 配置订单orderList 用户的对应的订单列表ofType 订单的类型是Order--><collection property="orderList" ofType="Order"><id property="orderId" column="order_id" /><result property="orderTime" column="order_time"/><result property="orderMoney" column="order_money"/></collection></resultMap><select id="queryAllUserAndOrder" resultMap="userAndOrderMap">SELECT * FROM users1 u , orders oWHERE u.`userId` = o.`uid`</select></mapper>
  • user实体多了个 装订单的集合
public class User {private Integer userId;private String userName;private String userPassword;private Date birthday;// 一对多 每个用户 有多个订单private List<Order> orderList;// 省略n多..}

2. 多对多实现

1. 多对多关系实现
如用户表和角色表
一个用户可能扮演多个角色,如是程序员,也可以是
歌手。
而单个角色也有多个人在扮演。
而决定用户表和角色表的有中间第三个表,用户角色关系表,
这个表有用户表和角色表的主键两个列。再如歌单表和歌曲表
歌单里面有多首歌曲,一首歌曲会出现多个歌单里面。
典型的多对多关系。中间也是由第三个表
将歌单和歌曲表的主键联系起来的。与一对多的区别:多了个中间的关系表,把两个表通过主外键联系起来。
  • 以角色表为例
-- 用户表
create table `users1` (`userId` int (11),`userName` varchar (60),`userPassword` varchar (120),`birthday` bigint (255)
); -- 角色表
CREATE TABLE role (role_id INT PRIMARY KEY,role_name VARCHAR(30) NOT NULL UNIQUE
);-- 将用户表和角色表连接起来的表
CREATE TABLE user_role (user_id INT NOT NULL,role_id INT NOT NULL
);
  • 用户新增角色表字段
    // 新增角色表 每个用户有多个角色,每个角色可能对应多个用户private List<Role> roleList;
  • 用户和对应的角色多对多配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="cn.bitqian.dao.UserMapper"><resultMap id="userAndRoleMap" type="User"><id property="userId" column="userId"/><result property="userName" column="userName"/><result property="userPassword" column="userPassword"/><result property="birthday" column="birthday"/><collection property="roleList" ofType="Role"><id property="roleId" column="role_id"/><result property="roleName" column="role_name"/></collection></resultMap><!--多对多查询--><select id="queryAllUserAndRole" resultMap="userAndRoleMap">SELECT * FROM users1, user_role, roleWHERE users1.`userId` = user_role.`user_id`AND role.`role_id` = user_role.`role_id`</select>
</mapper>

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

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

相关文章

优化JS代码的34种方法(上)

1. 含有多个条件的if语句 //longhand if(x abc || x def || x ghi || x jkl){//logic }//shorthand if([abc,def,ghi,jkl].includes(x)){//logic }2. if…else的缩写法 当我们在if-else条件下的逻辑比较简单时&#xff0c;我们可以使用三元条件运算符。 //longhand let …

稀疏表示

稀疏表示是近期几年信号处理领域的热点之中的一个&#xff0c;简单来说&#xff0c;它事实上是一种对原始信号的分解过程&#xff0c;该分解过程借助一个事先得到的字典&#xff08;也有人称之为过完备基&#xff0c;overcomplete basis&#xff0c;后面会介绍到&#xff09;&a…

一对一,一对多,多对多查询 (注解写法)

目录1、实体2、一对一3、一对多4、多对多5、测试核心&#xff1a; 一对一&#xff0c;注解&#xff1a;Select Results Result One 一对多 & 多对多&#xff0c;One改为Many共同的操作&#xff1a;查询多表时&#xff0c;先查一个表&#xff0c; 把这个实体属性作为查询条件…

Linux内核中影响tcp三次握手的一些协议配置

在Linux的发行版本中&#xff0c;都存在一个/proc/目录&#xff0c;有的也称它为Proc文件系统。在 /proc 虚拟文件系统中存在一些可调节的内核参数。这个文件系统中的每个文件都表示一个或多个参数&#xff0c;它们可以通过 cat 工具进行读取&#xff0c;或使用 echo 命令进行修…

ssm整合 durid数据源 报错java.sql.SQLException: Access denied for user ‘xxx‘@‘localhost‘

目录1、报错原因2、如何解决1、报错原因 连接数据库账号密码错误… 但我在jdbc.properties中检查账号&#xff0c; 密码都是正确的呀&#xff0c;&#x1f623; drivercom.mysql.cj.jdbc.Driver urljdbc:mysql://localhost:3306/mybatis_study?serverTimezoneGMT usernamer…

CS无线电语

〔Radio Commands (" Z "键) - 无线电指令〕1."Cover me" (掩护我)2."You Take The Point"(你守住这个位置)3."Hold This Position"(各单位保持现在的位置)4."REGROUP TEAM"(重新组队)&#xff0c;队友过于分散的时候可以用…

ssm整合 报错org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):xxx

目录1. 报错原因2. 解决3. 说明1. 报错原因 使用MapperScannerConfigurer扫描对应的mapper接口&#xff0c;帮我把mapper放入spring容器中&#xff0c;但是我的mapper映射文件并没有关联到sessionFactory中。 加载mybatis核心配置文件时&#xff0c; 其中的环境&#xff0c;数…

Teradata Fastload 使用方法

第一步&#xff1a; 首先打开 teradata fastload.exe 第二步&#xff1a; 通过粘贴导入脚本 脚本&#xff1a; SESSIONS 4; ERRLIMIT 25; SET RECORD VARTEXT ",";LOGON localhost/Teradata_Education,Educate; /* localhost:IP Address; Teradata_Education:user…

linux编译警告 will be initialized after

http://blog.chinaunix.net/uid-17019762-id-3152012.html 作为一个有强迫症的人&#xff0c;实在是受不了 warning 的存在 这个warning是由于初始化顺序引起的, // 会出现warning 的代码&#xff01;class cInit{public: cInit(std::string str, int a) : str_(str), a_(a…

Java实现邮箱发送(阿里云邮箱推送)

Java mail邮箱发送1. 邮箱信息实体类2. jar包依赖3. 发送邮箱实现绑定阿里云域名&#xff0c;创建域名账户&#xff0c;并配置解析域名账户&#xff0c;获得发送邮箱的权限&#xff0c;上限两百封&#xff0c;超出要&#xffe5;… 阿里云邮件推送控制台https://www.aliyun.co…

Android组件系列----BroadcastReceiver广播接收器

​【声明】 欢迎转载&#xff0c;但请保留文章原始出处→_→ 生命壹号&#xff1a;http://www.cnblogs.com/smyhvae/ 文章来源&#xff1a;http://www.cnblogs.com/smyhvae/p/3960623.html 【正文】 一、广播的功能和特征 广播的生命周期很短&#xff0c;经过调用对象-->…

vue.js 入门,简介

vue的源代码下载——开发版本和生产版本 https://cn.vuejs.org/js/vue.jshttps://cn.vuejs.org/js/vue.min.js vue中文学习官网 https://cn.vuejs.org/v2/guide/ vue学习入门1. 什么是vue.js2. vue的要学的核心3. 我的第一个vue程序(&#xffe3;▽&#xffe3;)"1. 什么…

项目开发--高级功能汇总

祭奠曾经逝去的青春…… 1.高级功能汇总-->Memcached之ASP.NET实现 2.高级功能汇总-->HubbleDotNet软件安装转载于:https://www.cnblogs.com/dmeiyang002/p/3961520.html

vue中的数据单向绑定,判断,循环,函数

vue基本语法1. 前言2. 数据绑定v-bind3. v-if || v-else-if || v-else 条件判断4. v-for 循环5. v-on 元素监听事件1. 前言 vue语法&#xff0c;基本照着官网的来的&#xff0c;也有一些看了b站某kuang的视频&#xff0c;受了些启发。 <div id"app">// 取dat…

Asp.Net MVC4入门指南(5):从控制器访问数据模型

在本节中&#xff0c;您将创建一个新的MoviesController类&#xff0c;并在这个Controller类里编写代码来取得电影数据&#xff0c;并使用视图模板将数据展示在浏览器里。 在开始下一步前&#xff0c;先Build一下应用程序(生成应用程序)(确保应用程序编译没有问题) 用鼠标右键单…

vue双向数据绑定v-model绑定单选框,复选框,下拉框

v-model使用1. 简单的demo2. 三种框的绑定注意它是自动帮你确认值的&#xff01;&#xff01;&#xff01;无需关心过程&#xff0c;把json数据一丢到data中&#xff0c;自动选中。1. 简单的demo 实现一边在输入框输入&#xff0c;一边显示输入框的内容 2. 三种框的绑定 &l…

WebApp基础01-设置读取assets目录下文件

要读取assets下的目录&#xff0c;只需要修改三个地方即可 1.res/layout/activity_main.xml 2.AndroidManifest.xml 3.src\com\example\lcy\MainActivity.java 第一步.res/layout/activity_main.xml加入代码,需要在xml布局文件中声明WebView组件 <WebView android:id"i…

vue借助axios实现网络通信

vue的好处之一&#xff0c;只关注视图层。对于通信&#xff0c;可以在vue实例对象创建前通过mounted钩子函数发送ajax请求&#xff0c;来拿到json数据。 发送请求通过axios&#xff0c;或者jQuery发送。 请求的数据在response对象里面。并绑定到vue对象data方法里。 1. 要访问…

vue自定义组件,插槽,自定义事件

vue组件套娃1. vue自定义组件2. 组件和插槽套娃3. vue组件通过自定义事件更改vue实例中的数据1. vue自定义组件 语法 Vue.component(自定义组件名, {props: [var1, var2, var3], //每个属性可以和页面绑定值template: <p>{{ var1 }}</p> // 自定义模板 里面套htm…