mybatis|mybatis框架之多表高级查询( 二 )
1案例分析
①需求分析
因为涉及到订单信息表 , 和下单人信息表两张表的信息 , 所以需要使用到多表关联查询 。
②查询结果
其结果有两张表的数据 , 那么如何在Java中接受查询到的数据呢?
我们知道数据表可以对应一个Java实体类 , 现在有多张表数据如何对应一个Java实体类?
就可以使用③这种方式 , 将User实体类对象作为Order实体类的成员变量 。
2代码编写
①mapper层接口方法
根据订单号查询订单和用户 , 参数为订单号 , 结果为一个order对象 。
②映射文件sql语句编写
这不用多说 , 上述就已经分析了 。
③测试代码
我们会发现其查询结果中 , order实体类中的user属性为null
为什么会这样呢?
因为mybatis并不能自动映射user实体类 , 所以需要自行配置resultMap 。
3代码优化
①结果集类型为order
指定结果集id , 编写对应的resultMap标签 。
②association标签
其翻译过来本身就是联合的意思 。
- property:也就是order中需要关联的属性 , 这里也就是user 。
- javaType:关联属性对应的Java类型 , 这里也就是User实体类 。
User的id在order中对应的也就是user_id 。
再次测试查询时 , 就能发现查询结果中user类中的数据也能获取了 。
三、一对多查询案例:查询订单 , 查询出下单人信息并且查询出订单详情 。
①sql语句编写
查询结果与三张表相关联 , 那么一共有两次表关联查询 。
②数据库查询结果
通过结果我们可以发现一个订单号查询出了2个订单详情 。
③Order实体类拓展
订单和订单详情是一对多关系 , 那么同理 , 将订单详情的集合封装成订单的一个属性 。
分析完毕 , 代码编写 , 同样的方式使用resultMap标签 , 一次性将代码写完整 。
①mapper层接口方法说明
②映射文件中sql语句编写
③一对多查询 , collection标签 , 其本身翻译过来也就是集合的意思:
- property:属性名 , 这里也就是封装到Order类中的orderdetails属性 。
- javaType:集合类型 , 我们封装的是List 。
- ofType:集合中的元素类型 , 即泛型 。
- autoMapping:开启自动映射
最后谢谢你的观看 。
如果可以的话 , 麻烦帮忙点个赞 , 谢谢你 。
- 智东西|Lab高级研究员李丕绩:格式控制下的文本生成框架SongNet,腾讯AI
- ZAKER生活|让祭祀回到“文明”的框架之下,这个中元节
- mybatis|java新手教程: springboot集成mybatis-plus上篇的学习
- 薄情先生|UI开发框架,分享一款国内开源实用精美的WinForm
- jQuery|中国人开发出来的一款框架,火遍全球,全世界很多人都在用
- 电子商务|电商运营方案怎么写?这有1份完整的思维导图框架供你参考
- Java|字节Java全能手册火了!多线程/网络/性能调优/框架啥都有
- 江湖车侠|全自动实时移动端AI框架,YOLO-v4目标检测实时手机实现
- 产业气象站|提升前端效率必杀技,百度开源低代码前端框架–amis
- 辣妹盘点酱|| MindSpore开源框架公开四大关键,华为昇腾师资培训沙龙杭州场