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数据库表则属于一对多的关联关系!

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

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

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

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

<select id="selectById" resultType="com.debug.springboot.model.entity.Article">
    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}
  </select>

更多请见:http://www.mark-to-win.com/tutorial/51039.html 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值