当前位置:首页>编程日记>正文

asp多表查询并显示_SpringBoot系列(五):SpringBoot整合Mybatis实现多表关联查询

本文我们将继续分享介绍Spring Boot在整合Mybatis开发企业级应用时其他典型的业务场景,即Mybatis是如何实现多表关联查询时将查询结果集与对象进行映射的,主要的内容包含“一对一的表关联”和“一对多/多对多的表关联”查询。

在上一篇文章中,我们分享介绍了如何基于Spring Boot搭建的标准企业级项目整合第三方的持久层依赖Mybatis,并实现最基本的CRUD功能,此种CRUD估计大伙都明白这是只针对“单一的数据库表”操作的。

而本文我们将趁热打铁,继续分享介绍不一样的内容,即如何基于Mybatis实现“Java对象”与“多表关联查询结果集”的映射。

在开始代码实战之前,我们简单的需要建立两张数据库表,分别是user用户表、comment评论表,其对应的数据库建表语句DDL如下所示:

CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '名字', `code` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '工号', PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户信息表';

CREATE TABLE `comment` ( `id` int(11) NOT NULL AUTO_INCREMENT, `content` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '评论', `user_id` int(11) DEFAULT NULL COMMENT '评论者id', `article_id` int(11) DEFAULT NULL COMMENT '文章id', PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='评论';

其中,在上一篇文章中建立的数据库表 “article文章”的user_id即来源于user用户表的主键id,而一篇文章会有很多评论,这些评论信息将存储在comment评论表中,从而,我们可以看出,user与article数据表是平级的关系,而article与comment数据库表则属于一对多的关联关系!

废话不多讲,下面就代码实战环节:

1.数据库表为一对一的平级关联关系实战(涉及user、article表)

(1)首先我们需要明确实战的业务场景:“根据文章的主键id或者文章的详情,在文章的详情中除了需要显示文章的具体信息之外,还需要显示作者的相关信息”。

基于这样的业务场景,首先我们需要将Sql写好,如下所示为Mapper.xml对应的代码:

SELECT a.id, a.title, a.user_id, b.name AS userName FROM article AS a LEFT JOIN user AS b ON b.id = a.user_id WHERE a.id = #{id}

在这里,我们采用的是“左关联”的方式,在获取文章详情的同时,获取该文章所属的作者的相关信息!而为了能让“Java对象”接收存储查询出来的属于用户层面的信息,我们需要在Article类中添加用户相关的“字段信息”,如下所示(在这里我们提前将后文即将要介绍的在一对多映射时需要的comments字段建好了!):

@Datapublic class Article {private Integer id; @NotBlank(message = "文章标题不能为空") private String title; @NotNullprivate Integer userId; //子查询映射 private List comments; //作者名字 private String userName;}

紧接着,当然是Controller的代码啦:

//多表关联-平级 @RequestMapping(value = "info/{id}") public BaseResponse info(@PathVariable Integer id){ BaseResponse response=new BaseResponse(StatusCode.Success); try { response.setData(articleService.info(id)); }catch (Exception e){ response=new BaseResponse(StatusCode.Fail.getCode(),e.getMessage()); } return response; }

而Service的代码逻辑也比较简单,如下所示:

//详情 @Override public Article info(Integer id) throws Exception { return articleMapper.selectById(id); }

Mapper操作接口对应的方法定义如下所示:

Article selectById(@Param("id") Integer id);

最后,当然是将项目运行起来,然后采用浏览器或者postman进行自测访问,废话不多讲,看图:

asp多表查询并显示_SpringBoot系列(五):SpringBoot整合Mybatis实现多表关联查询 配图01

http://www.coolblog.cn/news/f06a387dcf3774a6.html

相关文章:

  • asp多表查询并显示_SpringBoot系列(五):SpringBoot整合Mybatis实现多表关联查询
  • s7day2学习记录
  • 【求锤得锤的故事】Redis锁从面试连环炮聊到神仙打架。
  • 矿Spring入门Demo
  • 拼音怎么写_老师:不会写的字用圈代替,看到孩子试卷,网友:人才
  • Linux 实时流量监测(iptraf中文图解)
  • Win10 + Python + GPU版MXNet + VS2015 + RTools + R配置
  • 美颜
  • shell访问php文件夹,Shell获取某目录下所有文件夹的名称
  • 如何优雅的实现 Spring Boot 接口参数加密解密?
  • LeCun亲授的深度学习入门课:从飞行器的发明到卷积神经网络
  • Mac原生Terminal快速登录ssh
  • java受保护的数据与_Javascript类定义语法,私有成员、受保护成员、静态成员等介绍...
  • mysql commit 机制_1024MySQL事物提交机制
  • 支撑微博千亿调用的轻量级RPC框架:Motan
  • jquery 使用小技巧
  • 2019-9
  • 法拉利虚拟学院2010 服务器,法拉利虚拟学院2010
  • vscode pylint 错误_将实际未错误的py库添加到pylint白名单
  • 科学计算工具NumPy(3):ndarray的元素处理
  • 工程师在工作电脑存 64G 不雅文件,被公司开除后索赔 41 万,结果…
  • linux批量创建用户和密码
  • newinsets用法java_Java XYPlot.setInsets方法代碼示例
  • js常用阻止冒泡事件
  • 气泡图在开源监控工具中的应用效果
  • 各类型土地利用图例_划重点!国土空间总体规划——土地利用
  • php 启动服务器监听
  • dubbo简单示例
  • 【设计模式】 模式PK:策略模式VS状态模式
  • [iptables]Redhat 7.2下使用iptables实现NAT
  • Ubuntu13.10:[3]如何开启SSH SERVER服务
  • CSS小技巧——CSS滚动条美化
  • JS实现-页面数据无限加载
  • 阿里巴巴分布式服务框架 Dubbo
  • 最新DOS大全
  • Django View(视图系统)
  • 阿里大鱼.net core 发送短信
  • 程序员入错行怎么办?
  • 两张超级大表join优化
  • 第九天函数
  • HDU 5988 最小费用流
  • Linux软件安装-----apache安装
  • 《看透springmvc源码分析与实践》读书笔记一
  • Sorenson Capital:值得投资的 5 种 AI 技术
  • 正式开课!如何学习相机模型与标定?(单目+双目+鱼眼+深度相机)
  • Arm芯片的新革命在缓缓上演
  • nagios自写插件—check_file
  • 通过Spark进行ALS离线和Stream实时推荐
  • python3 错误 Max retries exceeded with url 解决方法
  • 行为模式之Template Method模式