KKB :mybatis实现多表查询:一对多,多对一,多对多,一对一
作者:互联网
Mybatis查询之多表查询:一对多
记得一句话:一方存多方的集合,多方存储一方的属性。
在一对多的例子中,一:年级 ,多:学生
在年级中存储学生的集合,在学生bean中存储年级的属性
编写接口
编写配置文件
首先我们需要在mysql中先编写好查询语句,
先描述自身的信息,然后描述关联表的信息,id标签表述主键列,非主键列使用result标签描述
比如说这里的grade的id是主键,所以使用的是id标签,而gname是普通列,于是用的是result标签
此处的查询时根据grade表查询出student的信息,所以student使用collection标签表示从表中数据,也是遵从 id 和result的区别
Mybatis查询之多表查询:多对一
多方存一方的属性
resultMap使用的是Student
编写mapper配置文件,注意这里的连接表的语句使用的association 和 javaType
测试结果对数据进行拼接
javaType和ofType都是用来指定对象类型的,但是JavaType是用来指定一方中属性的类型,而ofType是用来指定多方属性的类型
Mybatis查询之多表查询:多对多
多表查询的结果不是直接返回一个类型,而是使用resultMap,再指定返回的类型
多对多用到了三张表,role 、 menu 、 middle
role表:角色表,其中包括了id和name
menu表:即权限表,其中包括id和name等等
middle:则包括 roleId和menu的Id
java代码中不需要创建中间表middle的bean对象,只需要创建role和menu的表对象
每一方 都是多方,所以都需存储 对方的集合
编写查询方法的接口,注意返回的值是查询的值,不是说你查询结果为菜单,然后返回值是个Menu对象
mapper的查询语句都是使用collection包括多的一方
一对一
一对一的使用场景比较少,比如说生活中的一夫一妻
bean中需要定义对方的属性,然后在mapper中需要注意返回的resultMap中的属性是association
标签:一方,多表,menu,查询,标签,mybatis,KKB,id,属性 来源: https://blog.csdn.net/awodwde/article/details/113058370