07.MyBatis中的关联查询

关联查询:

一对一:

两种方式实现:

1.通过业务扩展的方式进行一对一查询,新建一个实体类,继承其中属性多的一个,然后写上另一个类中的属性:

实体类:

 

 映射文件:

1 <!-- 业务扩展的方式进行一对一查询,创建一个新的实体类继承属性多的一方然后重写属性少的一方 -->
2   <select id="queryStudentWithOO" parameterType="int" resultType="StudentBusiness">
3     select * from student s inner join studentcard c on s.sid = c.cid and sid = #{sid}
4   </select>

测试类:

 1 //一对一查寻
 2     public static void queryStudentWithOO() throws IOException {
 3         //读取配置文件
 4         Reader reader = Resources.getResourceAsReader("conf.xml");
 5         //创建sqlSessionFactory
 6         SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
 7         //获取session
 8         SqlSession session = sessionFactory.openSession();
 9         //定位映射文件
10         studentMapper studentMapper = session.getMapper(studentMapper.class);
11         //定位sql语句并执行
12         StudentBusiness studentBusiness = studentMapper.queryStudentWithOO(3);
13         //提交事务
14         session.commit();
15         System.out.println(studentBusiness);
16         //关闭连接
17         session.close();
18     }

2.通过ResultMap的方式实现一对一

然后在映射文件中使用association进行对象属性的映射:

实体类:

配置文件:

 1  <select id="queryStudentWithMap" parameterType="int" resultMap="StudentBusiness1">
 2     select * from student s inner join studentcard c on s.sid = c.cid and sid = #{sid}
 3   </select>
 4 <resultMap type="StudentBusiness" id="StudentBusiness1">
 5   <id property="sid" column="sid"/>
 6   <result property="sname" column="sname"/>
 7   <result property="age" column="age"/>
 8   <result property="sex" column="sex"/>
 9   <result property="cid" column="cid"/>
10   <result property="stuInfo" column="stuInfo"/>
11       <association property="address" javaType="Address">
12           <result property="homeAddress" column="homeaddress"/>
13           <result property="schoolAddress" column="schooladdress"/>
14       </association>
15   </resultMap>

测试类:

 1 //一对一查寻,使用ResultMap的方式
 2     public static void queryStudentWithMap() throws IOException {
 3         //读取配置文件
 4         Reader reader = Resources.getResourceAsReader("conf.xml");
 5         //创建sqlSessionFactory
 6         SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
 7         //获取session
 8         SqlSession session = sessionFactory.openSession();
 9         //定位映射文件
10         studentMapper studentMapper = session.getMapper(studentMapper.class);
11         //定位sql语句并执行
12         StudentBusiness studentBusiness = studentMapper.queryStudentWithMap(3);
13         //提交事务
14         session.commit();
15         System.out.println(studentBusiness);
16         //关闭连接
17         session.close();
18     }

2.一对多:

一个班级对应多个学生,应在班级的实体类中定义一个学生的属性,然后在映射文件中使用collection进行对象属性集合进行映射:

实体类:

 

配置文件:

 1  <!-- 一对多查询 -->
 2   <select id="queryStudentWithOM" parameterType="int" resultMap="Studentclass1">
 3     select * from student s inner join studentclass c on s.cno = c.cno and c.cno = #{cno}
 4   </select>
 5   
 6   <resultMap type="StudentClass" id="Studentclass1">
 7       <id property="cno" column="cno"/>
 8       <result property="cname" column="cname"/>
 9       <!-- 循环集合用collection,属性值写集合属性名,类型写集合中的元素的类型并且使用的是ofType -->
10       <collection property="students" ofType="student">
11           <result property="sname" column="sname"/>
12           <result property="age" column="age"/>
13           <result property="sex" column="sex"/>
14       </collection>
15   </resultMap>

测试类:

 1 //一对多查寻
 2     public static void queryStudentWithOM() throws IOException {
 3         //读取配置文件
 4         Reader reader = Resources.getResourceAsReader("conf.xml");
 5         //创建sqlSessionFactory
 6         SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
 7         //获取session
 8         SqlSession session = sessionFactory.openSession();
 9         //定位映射文件
10         studentMapper studentMapper = session.getMapper(studentMapper.class);
11         //定位sql语句并执行
12          StudentClass studentClass = studentMapper.queryStudentWithOM(2);
13          System.out.println(studentClass);
14         //提交事务
15         session.commit();
16         List<Student> students = studentClass.getStudents();
17         for (Student student : students) {
18             System.out.print(studentClass.getCno() + "," + studentClass.getCname() + ",");
19             System.out.println(student.getSname()+"," +student.getAge()+"," +student.getSex());
20         }
21         //关闭连接
22         session.close();
23     }

 

转载于:https://www.cnblogs.com/man-tou/p/11345703.html

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

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

相关文章

黄仁勋回应放弃收购Arm:公司战略并没有太大改变

来源&#xff1a;网易智能2月21日消息&#xff0c;芯片巨头英伟达不久前公布了2022财年第四财季财报&#xff0c;显示其营收较上年同期猛增53%&#xff0c;游戏、数据中心和专业可视化市场平台也都实现了创纪录的收入。财报发布后&#xff0c;该公司首席执行官黄仁勋接受美国科…

无生命的AI算不上「智能」

来源&#xff1a;AI前线作者&#xff1a;Ben Dickson译者&#xff1a;王强策划&#xff1a;刘燕什么是智能&#xff1f;以非常快的速度解决复杂的数学问题就算智能吗&#xff1f;在国际象棋中击败世界冠军的力量算智能吗&#xff1f;分辨图像中数千个不同对象的能力算智能吗&am…

MySQL 练习 创建表格2

|--需求说明 #实践课&#xff0c;使用SQL语句创建成绩表#要求&#xff1a;在数据库myschool中&#xff0c;使用SQL语句创建成绩表result&#xff0c;result的结构表见书上 |--实现思路 采用创建表的语句完成 |--代码内容 #实践课&#xff0c;使用SQL语句创建成绩表 #要求&#…

前沿速递:因果涌现在多种因果衡量标准下普遍存在

来源&#xff1a; 集智俱乐部作者&#xff1a;陈昊编辑&#xff1a;邓一雪导语因果涌现理论指出&#xff0c;在宏观尺度下观察复杂系统可以减少因果关系中的噪声&#xff0c;从而得到具有更强因果关联的系统。目前该理论已经在有效信息和整合信息的因果度量标准下得到的验证&am…

类脑计算的一大突破 BrainScaleS-2

来源&#xff1a;混沌巡洋舰今天最成功的人工智能算法&#xff0c;人工神经网络&#xff0c;是基于我们大脑中错综复杂的真实神经网络。但与我们高效的大脑不同的是&#xff0c;在计算机上运行这些算法消耗了惊人的能量: 最大型的模型在训练全过程中消耗的能量几乎相当于五辆汽…

委托、Lambda表达式、事件系列07,使用EventHandler委托

谈到事件注册&#xff0c;EventHandler是最常用的。 EventHandler是一个委托&#xff0c;接收2个形参。sender是指事件的发起者&#xff0c;e代表事件参数。 □ 使用EventHandler实现猜拳游戏 使用EventHandler实现一个猜拳游戏&#xff0c;每次出拳&#xff0c;出剪刀、石头、…

2022年国家自然科学基金指南发布情况

来源&#xff1a;锐动源编辑部近日&#xff0c;2022年国家自然科学基金部分项目申报指南已陆续发布。据不完全统计&#xff0c;截至目前2022年国家自然科学基金已发布32个项目的申报指南&#xff0c;其中“国家自然科学基金委员会与日本学术振兴会合作与交流项目”已发布获资助…

最简单概率论的五个智慧

来源 &#xff1a;罗辑思维在我认为人人都应该学一些概率知识&#xff0c;它现在是公民的必备知识。现在的世界比过去复杂得多&#xff0c;其中有大量不确定性&#xff0c;是否理解概率&#xff0c;直接决定一个人的开化程度。01随机&#xff1a;有些事情是无缘无故地发生的这个…

谷歌AI一次注释了10%的已知蛋白质序列,超过人类十年研究成果

来源&#xff1a;ScienceAI编辑 &#xff1a;泽南、张倩和 AlphaFold 不同&#xff0c;这次谷歌探索的是用深度学习给蛋白质打上功能标签。蛋白质是组成人体一切细胞、组织的重要成分。机体所有重要的组成部分都需要有蛋白质的参与。目前已知存在的蛋白质种类有数十亿&#xff…

你真的了解计算生物学和AI for Science吗?

来源&#xff1a;量子位Q1&#xff1a;AlphaFold2的最大意义是什么&#xff1f;A1&#xff1a;这个看似突破性的进展&#xff0c;其实是技术演进的必然结果。 此外&#xff0c;如果我们换个视角来看待这个问题&#xff0c;蛋白质结构预测仅仅是计算生物学这个大门类里面一个相对…

Stephen Wolfram专访Judea Pearl:从贝叶斯网络到元胞自动机

来源&#xff1a; 集智俱乐部编译&#xff1a;闫和东、徐培 编辑&#xff1a;邓一雪 导语2022年人工智能与数学国际研讨会&#xff08;ISAIM 2022&#xff09;恰逢著名计算机科学家、贝叶斯网络之父 Judea Pearl 85岁生日&#xff0c;会议期间Mathematica创始人 Stephen Wolfra…

day32 并发编程之锁

并发编程之锁 1. GIL全局解释器锁 2. GIL与普通的互斥锁 3. 死锁 4. 信号量 5. event事件 6. 线程q 1. GIL全局解释器锁 """ In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytec…

马斯克Neuralink被曝“虐杀实验猴”,140万元美金项目遭谴责

来源&#xff1a; 学术头条作者&#xff1a;刘芳编辑&#xff1a;黄珊2021 年 4 月&#xff0c;马斯克公布了一段猴子用意念玩乒乓球游戏的视频&#xff0c;一时间为他旗下的脑机接口公司 Neuralink 赚足了眼球。然而最近&#xff0c;这些被用来做脑机接口实验的猴子的经历&…

死前真的会有「跑马灯」,人类首次同步测量大脑濒死状态

来源&#xff1a;新智元编辑&#xff1a;袁榭 好困或许&#xff0c;人死前可能真会眼前出现人生跑马灯&#xff01;最近&#xff0c;神经科学家在记录了一个濒临死亡的人类大脑的活动之后发现&#xff0c;人在死亡前后有节奏的脑电波模式与做梦、回忆记忆和冥想时出现的模式相似…

七牛图片盲水印

注意 暂时不支持从 dora 数据处理直接调该接口&#xff0c;只支持从 kodo 存储调用。即 cdn 域名不可开通图片瘦身调用形式 资源 http://i.iamlj.com/19-08-12/123936.png 处理参数 watermark/6/method/encode/text/aGVsbG8gcWluaXU 新图 http://i.iamlj.com/19-08-12/123936-w…

「最小细胞」的3D数字模型,计算揭示生命最基本的要求

来源&#xff1a;ScienceAI编辑&#xff1a;萝卜皮无论是海洋深处的奇异生物还是我们体内的细菌&#xff0c;地球上的所有生命都是由细胞组成的。但我们对这些细胞中最简单的细胞如何运作只有一个非常粗略的了解。伊利诺伊大学厄巴纳-香槟分校的一个团队创建了有史以来最完整的…

Yann LeCun最新发声:自监督+世界模型,让 AI 像人类与一样学习与推理

来源&#xff1a;AI科技评论作者&#xff1a;维克多、西西、王晔编辑&#xff1a;陈彩娴如何突破当代人工智能&#xff08;AI&#xff09;的瓶颈&#xff1f;不同学者存在不同观点。总体来看可以概括为两类&#xff0c;其一监督学习者&#xff0c;提倡通过改善数据标签质量&…

两大头号玩家 一个伟大愿景: 联邦学习的元生态建设美好世界

来源&#xff1a;IEEE标准协会新年伊始&#xff0c;世界领先的标准制定机构IEEE标准协会牵头&#xff0c;组织了2022年度联邦学习领域首场重量级尖峰交流活动——联邦学习首创团队带头人、谷歌研究院副总裁Blaise Agura y Arcas博士&#xff0c;与联邦学习亚洲奠基人、IEEE联邦…

物理学的过去、现在与未来

来源&#xff1a;中科院之声&#xff08;ID:zkyzswx&#xff09;、《物理》杂志、中国物理学会期刊网作者&#xff1a;冯端&#xff08;我国著名物理学家、金属和晶体材料学家、教育家&#xff0c;中国科学院院士、第三世界科学院院士、第五届中国物理学会理事长&#xff0c;南…

《MIT科技评论》:2022年全球十大突破性技术

来源&#xff1a;6G俱乐部资料来源&#xff1a;《麻省理工科技评论》近日&#xff0c;《麻省理工科技评论》2022年“全球十大突破性技术”正式发布。此次发布的突破性技术包括&#xff1a;“新冠口服药”“实用型聚变反应堆”“终结密码”“AI蛋白质折叠”“PoS权益证明”“长时…