mybatis的高级映射

mybatis的高级映射(重点)
        表与表之间的关系:
            一对一关系:
                栗子:一个人对应一个身份证号
            一对多关系:


                栗子:一个用户可以有多个订单
                1.    分析需求:查询用户"郭襄"的个人信息并且包含所属订单的名字
                2.  在数据库中编写查询语句
                3.  在主表对应的实体类中(User)添加映射关系:
                    一对多关系:
                        主表(user)应该包含从表(orders)的实体对象的集合
                        private List<Orders> orders;生成get\set方法
                4.  在接口类中定义接口方法 User findUsrName(String name);
                5.  在映射配置文件中配置<ResultMap>
                    建立两表之间的映射关系:

  <resultMap type="user" id="userMap"><id property="id" column="id" jdbcType="INTEGER"/><result property="name" column="name" jdbcType="VARCHAR"/><result property="sex" column="sex" jdbcType="VARCHAR"/><result property="username" column="username" jdbcType="VARCHAR"/><result property="pwd" column="pwd" jdbcType="VARCHAR"/><result property="tel" column="tel" jdbcType="VARCHAR"/>--多:集合collection<collection property="orders" ofType="orders"><id property="id" column="id" jdbcType="INTEGER"/><result property="ordername" column="ordername" jdbcType="VARCHAR"/></collection></resultMap>

配置操作语句:

    <!-- 查询用户"郭襄"的个人信息并且包含所属订单的名字 -->注:resultMap="userMap"<select id="findUserAndOrdersName" resultMap="userMap">SELECT `user`.*,orders.ordername  FROM `user`  LEFT JOIN orders  ON orders.orderuser=`user`.id  WHERE `user`.`name`=#{name}</select>

      多对一关系:


                栗子:多个订单属于一个用户
                    特殊:单独拿出一个订单来对应一个用户,一对一的关系
                1.    分析需求:查询订单信息并且包含所属用户名
                2.  在数据库中编写查询语句
                3.  在从表对应的实体类中(Orders)添加映射关系:
                    多对一关系:
                        从表(orders)实体类应该包含主表(user)实体对象的引用
                        private User user;
                4.  在接口类中定义接口方法
                    List<Orders> findOrdersAndName();
                5.  在映射配置文件中配置<ResultMap>

 <resultMap type="orders" id="ordersMap"><!-- property:值为实体的属性名 column:值为数据库表的字段名jdbcType:值为字段的数据类型--><id property="id" column="id" jdbcType="INTEGER"/><result property="ordernum" column="ordernum" jdbcType="VARCHAR"/><result property="ordername" column="ordername" jdbcType="VARCHAR"/><result property="ordermoney" column="ordermoney" jdbcType="DECIMAL"/><result property="orderdate" column="orderdate" jdbcType="TIMESTAMP"/>--多对一:association<association property="user" column="id"><id property="id" column="id" jdbcType="INTEGER"/><result property="name" column="name" jdbcType="VARCHAR"/></association></resultMap>配置操作语句:<!-- 查询订单信息并且包含所属用户名 --><select id="findOrdersAndName" resultMap="ordersMap">SELECT orders.*,`user`.`name` FROM orders,`user` WHERE orders.orderuser=`user`.id</select>

多对多关系:m:n
                栗子:学生与课程的关系
                        一个学生可以上多门课程;
                        一门课程可以被多个学生学习;
                    
                    实现步骤:
                        1.    分析需求:查询杜兰特同学的信息并且显示上哪一门课程
                        2.  在数据库中编写查询语句
                        3.  在第一个查询的表的实体类中(Student)添加映射关系:
                            多对多关系:
                                应该包含另外一个表的实体对象的集合引用
                                private List<Student> students;
                        4.  在接口类中定义接口方法
                            Student findStuAndCourse(String name);
                        5.  在映射配置文件中配置<ResultMap>

  <resultMap type="student" id="studentMap"><id property="stuid" column="stuid" jdbcType="INTEGER"/><result property="name" column="name" jdbcType="VARCHAR"/><result property="sex" column="sex" jdbcType="VARCHAR"/><result property="stunum" column="stunum" jdbcType="VARCHAR"/><result property="major" column="major" jdbcType="VARCHAR"/><result property="address" column="address" jdbcType="VARCHAR"/><result property="username" column="username" jdbcType="VARCHAR"/><result property="password" column="password" jdbcType="VARCHAR"/><collection property="courses" ofType="course"><id property="id" column="id" jdbcType="INTEGER"/><result property="courseName" column="course_name" jdbcType="VARCHAR"/></collection></resultMap><!-- 查询用户"郭襄"的个人信息并且包含所属订单的名字 --><select id="findStuAndCourse" resultMap="studentMap">SELECT student.*,course.course_name AS courseName FROM student LEFT JOIN stucourse ON student.stuid=stucourse.stuid LEFT JOIN course ON stucourse.courseid=course.id WHERE student.`name`=#{name}</select>


                                    

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

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

相关文章

[深度学习] 自编码器Autoencoder

自编码器&#xff08;Autoencoder&#xff09;是一种无监督学习算法&#xff0c;主要用于数据的降维、特征提取和数据重建。自编码器由两个主要部分组成&#xff1a;编码器&#xff08;Encoder&#xff09;和解码器&#xff08;Decoder&#xff09;。其基本思想是将输入数据映射…

文心一言 VS 讯飞星火 VS chatgpt (290)-- 算法导论21.3 3题

三、给出一个包含 m 个 MAKE-SET 、UNION 和 FINDSET 操作的序列(其中有 n 个是 MAKE-SET 操作)&#xff0c;当仅使用按秩合并时&#xff0c;需要 Ω(mlgn) 的时间。如果要写代码&#xff0c;请用go语言。 文心一言&#xff1a; 在并查集&#xff08;Union-Find&#xff09;数…

2024最出色的代理软件评估及推荐

随着网络技术的飞速发展&#xff0c;代理软件已成为许多网络活动不可或缺的工具&#xff0c;特别是在数据抓取、网络安全防护等方面。在众多代理软件中&#xff0c;哪些能真正满足用户需求&#xff0c;提供卓越的性能和服务呢&#xff1f;我们的测评团队经过深入研究和测试&…

笔记本电脑安装CentOS

正文共&#xff1a;1234 字 24 图&#xff0c;预估阅读时间&#xff1a;2 分钟 前面我们对VPP进行了多次介绍&#xff08;羡慕&#xff01;大佬的VPP能达到180G性能&#xff0c;而我的却只有13.5G&#xff09;&#xff0c;可以发现他的很多优点&#xff0c;但是我们也可以发现它…

【Sklearn-驯化】sklearn中决策树cart的用法,看这篇就够了

【Sklearn-驯化】sklearn中决策树cart的用法&#xff0c;看这篇就够了 本次修炼方法请往下查看 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合&#xff0c;智慧小天地&#xff01; &#x1f387; 免费获取相关内容文档…

鸿蒙NEXT

[中国&#xff0c;东莞&#xff0c;2024年6月24日] 华为开发者大会&#xff08;HDC&#xff09;正式开幕&#xff0c;带来全新的 HarmonyOS NEXT、盘古大模型5.0等最创新成果&#xff0c;持续为消费者和开发者带来创新体验。 HarmonyOS NEXT 鸿蒙生态 星河璀璨 鸿蒙生态设备数…

【实战指南】SpringBoot结合Zookeeper/Nacos构建Dubbo微服务

1、微服务架构 微服务架构是一种设计复杂应用程序的方法&#xff0c;它提倡将单一应用程序开发为一组小型、独立的服务&#xff0c;每个服务运行在其自己的进程中&#xff0c;并通过轻量级通信&#xff08;通常是HTTP协议&#xff09;进行交互。每个服务都是围绕业务功能构建的…

通讯录管理系统——显示联系人

功能描述&#xff1a;显示通讯录中已有的联系人信息 显示联系人实现步骤&#xff1a; 1.封装显示联系人函数 2.测试显示联系人功能 一、封装显示联系人函数 思路&#xff1a;判断如果当前通讯录中没有人员&#xff0c;就提示记录为空&#xff1b;人数大于0&#xff0c;显示…

Java代码基础算法练习-计算看完一本书的天数-2024.06.29

任务描述&#xff1a; 一本书有 n 页&#xff0c;小明第一天看 1 页&#xff0c;以后每天都比前一天多看 2 页&#xff0c;计算小明看完整本书 需要多少天&#xff1f; 解决思路&#xff1a; 每天都比前一天多看 2 页&#xff0c;输入的页数 n 为判断标准&#xff0c;while 循…

【提交ACM出版 | EIScopus检索稳定 | 高录用】第五届大数据与社会科学国际学术会议(ICBDSS 2024,8月16-18)

第五届大数据与社会科学国际学术会议&#xff08;ICBDSS 2024&#xff09;将于2024年08月16-18日在中国-上海隆重举行。 ICBDSS会议在各专家教授的支持下&#xff0c;去年已成功举办了四届会议。为了让更多的学者有机会参与会议分享交流经验。本次会议主要围绕“大数据”、“社…

【nvm】如何使用nvm优雅的管理Node.js

希望文章能给到你启发和灵感&#xff5e; 如果觉得文章对你有帮助的话&#xff0c;点赞 关注 收藏 支持一下博主吧&#xff5e; 阅读指南 开篇说明一、基础环境说明1.1 硬件环境1.2 软件环境 二、什么是nvm?2.1 概念2.1 安装2.1.1 对于Mac系统2.1.2 对于Windows系统2.1.3 对于…

贪心法思想-求最大子数组和案例图解

贪心法思想 ​ 基本思想是在问题的每个决策阶段&#xff0c;都选择当前看起来最优的选择&#xff0c;即贪心地做出局部最优的决策&#xff0c;以期获得全局最优解。 ​ 正如其名字一样&#xff0c;贪心法在解决问题的策略上目光短浅&#xff0c;只根据当前已有的信息做出选择…

AI绘画,5分钟用 stable diffusion 做装修图,室内设计师要失业了

大家好我是极客菌&#xff01;随着AI绘画功能越来越强大&#xff0c;不光可以用来画人物&#xff0c;为电商模特一键换衣&#xff0c;还可以在5分钟内生成一张室内效果图&#xff0c;看来室内设计师饭碗也岌岌可危了。 1、获得室内线稿图 首先&#xff0c;打开3ds max &#…

LabVIEW航空用电缆检测

系统通过集成LabVIEW平台&#xff0c;实现了航空用电缆检测过程中的自动数据收集、处理和报告生成&#xff0c;显著提升了检测效率和数据准确性&#xff0c;降低了人工干预&#xff0c;提高了电缆检测的可靠性。 项目背景 在航空领域&#xff0c;电缆的质量检测对确保飞机及其…

c语言中extern定义和引用其他文件的变量,(sublime text)单独一个文件编译不会成功

关键字extern的作用 这个很常见的都知道是定义一个外部变量或函数&#xff0c;但并不是简单的建立两个文件&#xff0c;然后在用extern 定义在另一个非最初定义变量的文件里 区分文件和编译运行的文件 例如&#xff0c;一个文件夹里有文件a.c和文件b.c,在sublime text中直接…

深入解析链表:解锁数据结构核心奥秘

一. 链表的定义 链表是一种线性数据结构&#xff0c;由一系列节点组成。每个节点包含两个部分&#xff1a; 数据域&#xff08;Data&#xff09;&#xff1a;存储节点的数据。指针域&#xff08;Pointer&#xff09;&#xff1a;存储指向下一个节点的地址。 链表的第一个节点…

【Linux】Wmware Esxi磁盘扩容

目录 一、概述 1.1 磁盘分区概念 1.2 LVM概念 二、扩容步骤 二、报错 一、概述 1.1 磁盘分区概念 在 Linux 中&#xff0c;每一个硬件设备都映射到一个系统的文件&#xff0c;对于硬盘、光驱等 IDE 或 SCSI 设备也不例外。Linux把各种 IDE 设备分配了一个由 hd 前缀组成的文…

论文辅导 | 基于贝叶斯优化-卷积神经网络-双向长短期记忆神经网络的锂电池健康状态评估

辅导文章 模型描述 准确估计电池健康状态是设备稳定运行的关键。针对当前健康状态研究中容量难以直接测量、估计模型调参费时等问题&#xff0c;提出基于多健康特征的贝叶斯优化&#xff08;BO&#xff09;算法优化卷积神经网络&#xff08;CNN&#xff09;与双向长短期记忆&a…

冯雷老师:618大退货事件分析

近日冯雷老师受邀为某头部电商36名高管进行培训&#xff0c;其中聊到了今年618退货潮的问题。以下内容整理自冯雷老师的部分授课内容。 一、引言 随着电子商务的蓬勃发展&#xff0c;每年的618大促已成为消费者和商家共同关注的焦点。然而&#xff0c;在销售额不断攀升的同时…

【详细教程】如何使用YOLOv10进行图片与视频的目标检测

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…