美文网首页
mybatis 关联查询

mybatis 关联查询

作者: 笨的很想飞 | 来源:发表于2023-03-28 09:49 被阅读0次

MyBatis 可以通过定义多个表的关联关系,实现多表查询。下面介绍两种常用的多表关联查询方法。

1. 嵌套查询

第一种方法是通过嵌套查询来实现多表关联查询。具体步骤如下:

//1.在 Mapper 接口中定义查询方法,方法返回值为一个包含多个实体对象的父实体对象。例如:

User selectUserWithOrders(Integer userId);

//2.在 Mapper XML 文件中编写 SQL 语句,使用嵌套查询来引用另一个表的数据。例如:
<select id="selectUserWithOrders" resultMap="userWithOrdersResultMap">
  select * from user where id = #{userId}
</select>

<resultMap id="userWithOrdersResultMap" type="User">
  <id property="id" column="id"/>
  <result property="name" column="name"/>
  <!-- 其他属性 -->

  <collection property="orders" ofType="Order">
    <id property="id" column="order_id"/>
    <result property="name" column="order_name"/>
    <!-- 其他属性 -->
  </collection>
</resultMap>
//在上面的代码中,<collection> 标签定义了一个集合属性,它的 property 属性指定了要映射的集合属性名称,
ofType 属性指定了集合中元素的类型。在 <collection> 标签内部,可以再定义多个子标签来指定集合元素的字段映射。

//3.在调用查询方法时,传入用户 ID,即可查询到该用户及其所有订单的信息。例如:

User user = userMapper.selectUserWithOrders(1);

2. 多表关联查询

//1.在 Mapper 接口中定义查询方法,方法返回值为一个包含多个实体对象的父实体对象。例如:
List<User> selectUsersAndOrders();

//2.在 Mapper XML 文件中编写 SQL 语句,使用 JOIN 语句来实现多表关联查询。例如:

<select id="selectUsersAndOrders" resultMap="userWithOrdersResultMap">
  select u.*, o.*
  from user u
  left join orders o on u.id = o.user_id
</select>

<resultMap id="userWithOrdersResultMap" type="User">
  <id property="id" column="id"/>
  <result property="name" column="name"/>
  <!-- 其他属性 -->

  <collection property="orders" ofType="Order">
    <id property="id" column="order_id"/>
    <result property="name" column="order_name"/>
    <!-- 其他属性 -->
  </collection>
</resultMap>
//在上面的代码中,使用 LEFT JOIN 关键字将两个表连接起来,并使用 u.* 和 o.* 来选择需要查询的字段。在 <resultMap> 中同样定义了用户和订单的映射关系。

//3.在调用查询方法时,即可查询到所有用户及其所有订单的信息。例如:
List<User> users = userMapper.selectUsersAndOrders();




相关文章

  • MyBatis 最佳实践篇 3:关联查询懒加载

    MyBatis 中联合查询可分为关联查询和关联结果两种方式(具体查看 Mybatis 文档篇 3.5:Mapper...

  • 关于关联查询的处理

    mybatis关联查询配置有2种:关联嵌套结果,关联嵌套查询关联的查询过程中如果关联的表可能查到很多数据,应该考虑...

  • mybatis进阶2——关联查询

    关联查询代码参考mybatis-demo测试代码AssociationQueryTest.java 0.关联查询的...

  • Mybatis关联查询

    1. mysql中的LEFT JOIN 使用left join是以左表为主,即使右表没有数据,也会出来左表的所有数...

  • Mybatis | 关联查询

    使用Mybatis进行关联查询,之前发在我的CSDN博客中,现在搬到简书上来。 数据库关系图 如图是一个博客系统的...

  • MyBatis关联查询

    【目录】1 一对一2 一对多 在项目开始之前准备好数据库。数据库database: 1 一对一 相关代码:主配置文...

  • MyBatis学习:MyBatis中的延迟加载

    MyBatis中的延迟加载。 1. 什么是延迟加载 例子:如果查询订单并且关联查询用户信息。如果先查询订单信息...

  • InvalidDefinitionException: No s

    在使用springboot + mybatis实现多表关联查询时报以下错误:com.fasterxml.jacks...

  • mybatis笔记整理

    mybatis的基本用法及配置: 本文涉及知识点: 1、mybatis入门2、配置版CRUD3、关联查询(1:1&...

  • MyBatis的关联查询

    创建数据库和表 两个表的关系:  user表的主键id和orders表的外键user_id连接,从user表的角度...

网友评论

      本文标题:mybatis 关联查询

      本文链接:https://www.haomeiwen.com/subject/psmtddtx.html