多表连接的两种方式(数据库逻辑模型):

1.一对一关系

2.一对多关系

一、通过 resultMap 和 association 实现一对一关系

在 mapper.xml 文件里面的代码:

 <resultMap type="com.pojo.TRecruitment" id="tRecruitmentCollegeResultMap">
<id property="id" column="id" />
<result property="title" column="title" />
<result property="litimg" column="litimg" />
<result property="publishedTime" column="published_time" />
<result property="author" column="author" />
<result property="collegeId" column="college_id" />
<result property="type" column="type" />
<result property="details" column="details" /> <!-- association :配置一对一属性 -->
<!-- property:实体类中里面的 TCollege 属性名 -->
<!-- javaType:属性类型 -->
<association property="tCollege" javaType="com.pojo.TCollege" >
<!-- id:声明主键,表示 college_id 是关联查询对象的唯一标识-->
<id property="collegeId" column="college_id" />
<result property="collegeName" column="college_name" />
<result property="collegeImg" column="college_img" />
</association>
</resultMap> <!-- 一对一关联,查询订单,订单内部包含用户属性 -->
<select id="querytTRecruitmentResultMap" resultMap="tRecruitmentCollegeResultMap">
SELECT
r.id,
r.title,
r.litimg,
r.published_time,
r.author,
r.type,
r.details,
c.college_name
FROM
`t_recruitment` r
LEFT JOIN `t_college` c ON r.college_id = c.college_id
</select>

在 mapper.java 文件里面写接口:

List<TRecruitment> querytTRecruitmentResultMap();

在对应的实体类中声明另外一个实体类:

二、通过 resultMap 和 collection 实现一对多关系

xml 文件:

<!-- 一个用户,拥有多个订单 -->
<resultMap type="User" id="UserAndOrdersResultMap"> <!-- 先配置 User 的属性 -->
<id column="id" property="id" />
<result column="username" property="username" />
<result column="birthday" property="birthday" />
<result column="sex" property="sex" />
<result column="address" property="address" /> <!-- 再配置 Orders 集合 -->
<collection property="ordersList" ofType="Orders">
<id column="oid" property="id" />
<result column="user_id" property="userId" />
<result column="number" property="number" />
<result column="createtime" property="createtime" />
</collection> </resultMap> <select id="findUserAndOrders" resultMap="UserAndOrdersResultMap">
SELECT u.*, o.`id` oid, o.`number`, o.`createtime`
FROM USER u, orders o
WHERE u.`id` = o.`user_id`;
</select>

原文:https://blog.csdn.net/weidong_y/article/details/80557941

MyBatis 多表连接查询的更多相关文章

  1. MyBatis数据持久化(七)多表连接查询

    本节继续以多表连接查询的案例介绍使用resultMap的好处,对于两张以上的表进行关联查询,当我们有选择的从不同表查询所需字段时,使用resultMap是相当方便的.例如我们有两张表,分别为用户表Us ...

  2. 三、mybatis多表关联查询和分布查询

    前言 mybatis多表关联查询和懒查询,这篇文章通过一对一和一对多的实例来展示多表查询.不过需要掌握数据输出的这方面的知识.之前整理过了mybatis入门案例和mybatis数据输出,多表查询是在前 ...

  3. MybatisPlus多表连接查询

    一.序言 (一)背景内容 软件应用技术架构中DAO层最常见的选型组件为MyBatis,熟悉MyBatis的朋友都清楚,曾几何时MyBatis是多么的风光,使用XML文件解决了复杂的数据库访问的难题.时 ...

  4. SQL多表连接查询(详细实例)

    转载博客:joeleo博客(http://www.xker.com/page/e2012/0708/117368.html) 本文主要列举两张和三张表来讲述多表连接查询. 新建两张表: 表1:stud ...

  5. SQL多表连接查询

    SQL多表连接查询 本文主要列举两张和三张表来讲述多表连接查询. 新建两张表: 表1:student  截图如下: 表2:course  截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际 ...

  6. oracle(sql)基础篇系列(二)——多表连接查询、子查询、视图

        多表连接查询 内连接(inner join) 目的:将多张表中能通过链接谓词或者链接运算符连接起来的数据查询出来. 等值连接(join...on(...=...)) --选出雇员的名字和雇员所 ...

  7. Access数据库多表连接查询

    第一次在Access中写多表查询,就按照MS数据库中的写法,结果报语法错,原来Access的多表连接查询是不一样的 表A.B.C,A关联B,B关联C,均用ID键关联 一般写法:select * fro ...

  8. PostgreSQL-join多表连接查询和子查询

    一.多表连接查询 1.连接方式概览 [inner] join 内连接:表A和表B以元组为单位做一个笛卡尔积,记为表C,然后在C中挑选出满足符合on 语句后边的限制条件的内容. left [outer] ...

  9. SQL表连接查询(inner join、full join、left join、right join)

    SQL表连接查询(inner join.full join.left join.right join) 前提条件:假设有两个表,一个是学生表,一个是学生成绩表. 表的数据有: 一.内连接-inner ...

随机推荐

  1. 运维笔记--linux环境提示python: command not found

    场景描述: 新部署的容器环境,终端执行python命令,提示没有该命令. 从报错异常可以看出,可能是python环境未安装. 分析思路: 检查python路径: 方式一:type -a python ...

  2. Java程序执行cmd命令

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.i ...

  3. Python之pandas读取mysql中文乱码问题

    # -*- coding: utf-8 -*- # author:baoshan import pandas as pd import pymysql config = { "host&qu ...

  4. Docker搭建ES集群

    Spring Boot连接ES,spring-boot-starter-data-elasticsearch. 必须为集群方式!否则报错! 报错: None of the configured nod ...

  5. Oracle的ole db连接字符串

    Provider=msdaora;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.59.22)(PO ...

  6. 北京WINUI外包团队:长期开发各类基于WINUI框架应用项目

    今年早些时候的Build 2018中,微软高层表示,使用.NET Core 3.0,开发人员将获得使用WPF.Windows Forms和XAML Islands(WinForms和WPF应用程序中的 ...

  7. NOI2019 Fe

    NFLS XY NOI2019 Fe Orz zsy,zhf,wqy,zjc,bly! Goodbye OI!

  8. Java环境配置-jdk和jre的安装

    java 是直接在 jdk 下就可以运行 jdk会自带jre 所以只需要下载jdk配置一下环境就可以了 一般编辑java是需要 myeclipse 也可以用 记事本TXT文档 或者用 notepad+ ...

  9. MySql 、Oracle 获取表结构和字段信息

    1.MySql获取表结构信息 SELECT TABLE_NAME, TABLE_COMMENT FROM information_schema.`TABLES` WHERE TABLE_SCHEMA ...

  10. Java开发笔记(一百二十四)AWT绘图操作

    前面介绍了如何使用画笔在控件上展示图像,可是图像来源于磁盘图片,无法即兴绘制个性化的图案.所幸画笔工具Graphics不仅能够描绘图像,还支持绘制常见的几何形状,也支持绘制文本字符串,除了绘制图像用到 ...