mybatis一对多联表查询的两种常见方式

1.嵌套结果查询(部分代码如下)

sql语句接上:

注释:class表(c别名),student表teacher(t别名)teacher_id为class表的字段t_id为teacher表的字段,因为两者有主键关联的原因,c_id为class表的字段。根据c_id查询。_classes为classes实体类(既是表class对应的实体类)前两个property为class表对应实体类的属性,column对应class表的字段,association中teacher为classes实体类属性,column为class表属性,javaType为teacher实体类(既是表teacher的实体类)。后面的id为teacher实体类的id column为teacher表的字段,result 中的name同理。

Collection中的id,name为student类属性,column中为student表中的字段。

对比一对一嵌套结果查询区别:*查询语句多出c_id=s.class_id(class_id为student表字段)

                                                 **多个collection其中的字段属性同上,不过没有column因为class表中没设计student表的id。

2.嵌套语句查询(部分代码如下)

注释:同上,其中collection中的column字段值为class表的字段,因为需要为查询student提供id,多个select。注意:当查询的结果需要封装时,select语句后不能再使用*查询,需要使用表别名加字段名

 【小插曲】模糊查询:

Dao中

注释:因为xml配置文件中sql语句只能识别#{name}这样可以在dao中加上%传过去。

原文地址:https://www.cnblogs.com/dslnn/p/8648897.html

时间: 2024-11-09 03:54:30

mybatis一对多联表查询的两种常见方式的相关文章

06_一对多联表查询

1 需求 一个班级中有多个学生 根据classId查询对应的班级信息,包括学生信息和老师信息 2 创建表和数据 CREATE TABLE student( s_id INT PRIMARY KEY AUTO_INCREMENT, s_name VARCHAR(20), class_id INT ); INSERT INTO student(s_name, class_id) VALUES('xs_A', 1); INSERT INTO student(s_name, class_id) VALU

SpringBoot集成Mybatis实现多表查询的两种方式(基于xml)

 下面将在用户和账户进行一对一查询的基础上进行介绍SpringBoot集成Mybatis实现多表查询的基于xml的两种方式.   首先我们先创建两个数据库表,分别是user用户表和account账户表     user表:  account表:  然后创建实体类        **第一种通过创建子类的方式查询                             需求:查询所有的用户基础信息以及其所属的账户中的金额     1.创建想要得到多表查询数据的实体类(子类)            

【转载】form表单的两种提交方式,submit和button的用法

1.当输入用户名和密码为空的时候,需要判断.这时候就用到了校验用户名和密码,这个需要在jsp的前端页面写:有两种方法,一种是用submit提交.一种是用button提交.方法一: 在jsp的前端页面的头部插入一个js方法: function checkUser(){   var result = document.getElementById("userid").value;   var password = document.getElementById("userpass

oracle删除表数据的两种的方式

转自:https://blog.csdn.net/qq_37840993/article/details/82490787 平时写sql中我们都会用到删除语句,而平时删除表数据的时候我们经常会用到两种方式: 在oracle中,truncate.delete都可以删除表数据,具体的区别以及sql语法如下: truncate table [表名]; delete from [表名]; delete与truncate的区别:delete:会产生rollback,如果删除大数据量的表速度会很慢,而且同时

SQL 一对多联表查询最大值

有两个数据表City表和Price表,CIty表的结构如下: Price表的结构如下: 查询每个城市最大的销售价格,并以最大价格进行降序排列,SQL语句的代码如下: select top 5 * from (select ROW_NUMBER() over(order by TmpTable.AdultyPrice desc) NID, City.*, TmpTable.AdultyPrice from City,(select MAX(Price.AdultyPrice) as AdultyP

MyBatis一对多关联表查询 映射文件

<!--一对多--> <!--根据广告组编号获取广告项列表一--> <select id="getAdInfoByAdSysNo" resultType="ec.model.advertising.AdInfo" parameterType="int"> SELECT * FROM T_AD_ADINFO WHERE adSysNo = #{sysNo,jdbcType=INTEGER} </select

form表单的两种提交方式,submit和button的用法

一种是用submit提交.一种是用button提交.方法一: 在jsp的前端页面的头部插入一个js方法: function checkUser(){   var result = document.getElementById("userid").value;   var password = document.getElementById("userpassid").value;   if(result == ""  ){     alert(

052_from表单的两种请求方式

multipart/form date:这个属性值,代表的是不做任何操作,原本是什么数据类型,传递过去就是什么数据类型.流就按照流来传输,字符串就按照html文件中设置的编码传输.application/x-www-form-urlencoded:这个属性值会将文本数据转成字符串,但是转成的字符串会使用什么编码呢? 我们的html文件设置的是什么编码,我们转换成的字符串就是什么编码. 原文地址:https://www.cnblogs.com/pogusanqian/p/12515281.html

mybatis 联表查询

一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系. 1 CREATE TABLE teacher( 2 t_id INT PRIMARY KEY AUTO_INCREMENT, 3 t_name VARCHAR(20) 4 ); 5 CREATE TABLE class( 6 c_id INT PRIMARY KEY AUTO_INCREMEN