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;该公司首席执行官黄仁勋接受美国科…

20190423面试记录

1&#xff09;apply&#xff0c;call&#xff0c;bind的区别 &#xff1f; 应用场景&#xff1a;用于改变this的指向 apply接收两个参数&#xff0c;第一个函数this将指向的对象&#xff0c;第二个是数组函数接收的参数 call接收多个参数&#xff0c;第一个函数this将指向的对象…

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

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

08.MyBatis整合Log4j

MyBatis整合Log4j&#xff1a; 1.导入log4j.jar 2.在conf.xml中开启日志文件: 1 <!-- 配置日志文件 --> 2 <settings> 3 <setting name"logImpl" value"LOG4J"/> 4 </settings> 如果不指定,MyBatis就会根据一下顺…

MySQL 练习 创建表格2

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

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

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

JavaScript每日学习日记(2)

8.13.2019 1. 正则表达式常见字符串方法&#xff1a; search( ) , replace( ) var str "Visit Website"; var n str.search(/website /i); var str "Visit Microsoft!"; var res str.replace("Microsoft", " Website "); 2. 如果未…

类脑计算的一大突破 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…

20190808面试记录

Angular的核心&#xff1f; 组件&#xff0c;指令&#xff0c;服务&#xff0c;依赖注入 性能优化&#xff1f; 1、减少http请求&#xff08;图片压缩合并&#xff0c;css压缩合并&#xff0c;js文件压缩合并&#xff09; 2、检查是否有重定向问题 3、检查是否一个列表有多次请…

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

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

excel字符串反转

1.新建空白sheet2.altf11调出VB3.插入-模块-填入自定义函数Function REVERSE(Str As String)REVERSE StrReverse(Str)End Function 转载于:https://www.cnblogs.com/AWNUygah/p/11350843.html

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

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

excel常用函数

1.截取字符串函数 left&#xff08;&#xff09;   从左边截取 mid()    从中间截取 right()    从右边截取 转载于:https://www.cnblogs.com/AWNUygah/p/11350904.html

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;人在死亡前后有节奏的脑电波模式与做梦、回忆记忆和冥想时出现的模式相似…