连表查询
Posted tunan-ki
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了连表查询相关的知识,希望对你有一定的参考价值。
当需要查询的数据一个表不能满足的时候,可以进行连表查询,将多个表的数据一起获取
一对一关联查询
案例:【用户表和购物车】
用户表
购物车表
用户Mybatis的工具自动生成代码
需求:根据用户id返回一个用户对象【用户对象里面需要有的数据有用户自己的信息+该用户的购物车信息】
主表是用户表,从表是购物车表
修改主表的实体类,手动添加成员变量
在主表实体类中添加成员变量,变量的数据类型是从表
在dao接口中新增方法
映射文件方式一:多表一次查询
sql语句
resultMap配置
上面配置中体现了User类中有ShopCar成员变量的关系,单个对象用association,集合对象用colleciton。
association标签
property:User类中ShopCar成员变量的变量名
javaType:User类中ShopCar成员变量的数据类型
测试结果
接收返回的User对象,里面即保存了用户表的数据,也保存了该用户对应的购物车的数据。
映射文件方式二:多表单独查询
第一条sql语句
resultMap:
第二条sql语句
总体
测试结果
成功
一对多关联查询
案例:【用户表和地址表】
需求:根据用户id返回一个用户对象【用户对象中有用户表信息,还有地址表中所有的地址数据】
修改主表的实体类【主表是用户表】
在dao接口中新增方法
映射文件方式一:多表一次查询 (注意ofType)
映射文件方式二:多表单独查询
自连查询
使用的场景:
员工与管理者【只需要一张表:员工表】
一级菜单与二级菜单【只需要一张表:菜单表】
一级评论与二级评论【只需要一张表:评论表】
商品大类别与小类别:只需要一张表:类别表】
等等,这类需求都只需要一张表,在表中可以通过两个不同的列来进行关联,表达出父与子【包含与被包含】的关系。
案例:网站的动态菜单
建表
生成代码
实体类
dao接口
映射文件 (本质是通过主键和外键的关系)
测试
成功
以上是关于连表查询的主要内容,如果未能解决你的问题,请参考以下文章