`

Mybatis 一对多关联查询(两种方法)

阅读更多
实体对象里定义的集合图片

private List<CompanyImagesModel> companyImages;
 
一、
1、定义 resultMap :
<!-- 图片 -->
<resultMap id="BaseResultMap_images" type="com.healthengine.model.CompanyModel"      extends="BaseResultMap" >
      <!-- 添加一对多的关联对象 -->
        <collection property="companyImages" column="companyImagesId"   ofType="com.healthengine.model.CompanyImagesModel">
      <id column="company_images_id" property="companyImagesId" jdbcType="BIGINT" />
    <result column="company_id" property="companyId" jdbcType="BIGINT" />
    <result column="type" property="type" jdbcType="INTEGER" />
    <result column="image_path" property="imagePath" jdbcType="VARCHAR" />
       </collection>   
</resultMap>
2.sql查询
<!--   查看公司信息关联图片 -->
  <select id="selectModelAndImagesByPrimaryKey" resultMap="BaseResultMap_images" parameterType="java.lang.Long" >
    select
    <include refid="Base_Column_List_images" />,img.company_images_id, img.company_id, img.image_path, img.type,
    SUBSTRING(city.merger_name,4) as city_name,city.parent_id as city_parentId
    from tb_company c
   left join tb_company_images img on c.company_id = img.company_id and img.flag=1
    LEFT JOIN tb_city city on c.city_id = city.city_id
    where c.flag=1 and  c.company_id = #{companyId,jdbcType=BIGINT}
  </select>
这种方法不适合分页查询,适合单一查询

二、
<!--   关联图片表 -->
private List<CompanyImagesModel> picture;

1、定义 resultMap :
  <resultMap id="BaseResultMap_leftJoin_images" type="com.healthengine.model.CompanyModel" extends="BaseResultMap" >
        <collection property="picture" column="{companyId=company_id,picture_view_path_pre=picture_view_path_pre}" select="com.healthengine.mapper.CompanyImagesModelMapper.selectByInformationId" >
        </collection>   
  </resultMap>
2.sql查询:
<!--   根据会员Id查看公司详情 -->
  <select id="selectByMemberId" resultMap="BaseResultMap_leftJoin_images" parameterType="java.util.Map" >
    select
    <include refid="Base_Column_List_images" />, city.name as city_name,
  #{picture_view_path_pre} as picture_view_path_pre
    FROM tb_company c 
    LEFT JOIN tb_city city on c.city_id = city.city_id
    where c.flag=1 and  c.member_id = #{memberId,jdbcType=BIGINT}
  </select>
3.圖片表sql
  <select id="selectByInformationId" resultMap="BaseResultMap" parameterType="java.util.Map" >
    select
    <include refid="Base_Column_List_images" />, CONCAT(#{picture_view_path_pre},img.image_path) as imagePath,
    img.image_path  as localHead_Path
    from tb_company_images img
    where img.flag=1 and  img.company_id = #{companyId,jdbcType=BIGINT} 
  </select>
companyIdpicture_view_path_pre需要的参数需要从第一个Mapper.xml里传过来。
分享到:
评论

相关推荐

    myBatis一对一和一对多

    在实际的项目开发中,我们经常遇到一对一(One-to-One)和一对多(One-to-Many)的关系映射,这两种关系在数据库设计中非常常见。本主题将详细探讨在MyBatis中如何实现一对一和一对多的映射。 ### 一对一映射(One-...

    SpringBoot中mybatis表关联映射关系(一对多嵌套:结果方式)

    在 MyBatis 中,我们可以使用 `&lt;collection&gt;` 元素来处理一对多关联关系。 在 `&lt;collection&gt;` 元素中,我们可以配置以下几个属性: * `javaType`:指定映射到实体对象属性的类型,用于指定实体对象中集合类属性所...

    MyBatis一对多映射

    在处理复杂的关联关系时,MyBatis的一对多映射机制显得尤为重要。一对多映射指的是一个父类实体对应多个子类实体的关系,例如一个学生可以有多个课程,一个部门可以有多名员工等。 一、一对多映射的基本概念 在...

    mybatis 一对多

    在MyBatis框架中,"一对多"关系映射是一种常见的数据库关联操作,它表示一个实体(如用户)可以对应多个子实体(如订单)。在实际的业务场景中,例如,一个用户可能有多个订单,这就是一对一到多的关系。本教程将...

    Mybatis多对多关联映射源码

    在Mybatis中,多对多关联映射是处理复杂数据关系的一种重要机制。它允许我们将一个实体类与多个同类或不同类的实体类之间建立起关联关系。Mybatis通过配置XML映射文件或注解来实现这种关系的映射。下面我们将深入...

    Spring整合MyBatis关联查询示例

    - **一对多关联**(One-to-Many):一个实体对应多个实体实例,如一个部门有多个员工。在MyBatis中,使用`&lt;collection&gt;`标签定义一对多关系,通常与`&lt;resultMap&gt;`配合使用。Java代码中,可以使用`@OneToMany`注解,...

    mybatis一对多小例子

    这个简单的一对多小例子展示了 MyBatis 如何优雅地处理关联查询,避免了手动编写复杂的 JOIN SQL,提高了代码的可维护性和可读性。通过 MyBatis 的映射机制,我们可以更加专注于业务逻辑,而不是数据库交互细节。

    mybatis关联查询多对多查询案例

    本案例聚焦于MyBatis中的多对多关联查询,这是一种常见的关系型数据库设计模式,用于处理两个表之间的复杂关联。 在数据库设计中,多对多关系指的是一个实体可以与多个其他实体相关联,反之亦然。例如,学生和课程...

    MyBatis的关联映射

    同样有外键关联和主键关联两种方式,其基本原理与一对一关系类似,只是`&lt;collection&gt;`标签通常用于处理集合类型的属性。 ### 多对多关系映射 多对多关系如学生和课程的对应关系,需要通过一个中间表来建立联系。在...

    mybatis多对多配置

    1. **关联映射(Association Mapping)**: 在MyBatis中,我们使用`&lt;association&gt;`标签来处理一对多或一对一的关系。但在这个场景下,我们关注的是多对多关系,通常会通过中间表来实现。 2. **联合映射(Collection ...

    mybatis 一对多 多对一

    **一对多关联映射** 在数据库设计中,一对多关系意味着一个父记录可以与多个子记录相关联。例如,一个用户可以拥有多个订单。在MyBatis中,我们可以通过`&lt;association&gt;`和`&lt;collection&gt;`元素来实现这种关系的映射。 ...

    Mybatis的一对一,一对多

    - **延迟加载**:如果开启,当首次访问一对多关系时,MyBatis会执行关联的SQL查询,而不是在初始加载时就获取所有数据。 ### 总结 MyBatis在处理一对一和一对多关系时,提供了灵活且高效的解决方案。开发者可以...

    mybatis(一对多xml)

    MyBatis 提供了一种通过 XML 映射文件来配置一对多关联的方法,让我们可以方便地处理这种复杂的关系。 在 MyBatis 的一对多关联映射中,通常涉及到两个表:一个是一对的“父”表,另一个是多的“子”表。在 XML ...

    Mybatis基于注解实现多表查询功能

    这种操作可以分为四种关系:一对多、多对一、一对一和多对多。在实际开发中,我们经常需要从多个表中检索数据,这时就需要使用多表查询。 二、Mybatis基于注解实现多表查询的优点 使用Mybatis基于注解实现多表查询...

    Springboot中mybatis表关联映射关系(一对一)

    MyBatis 提供了两种方式来加载关联关系对象:嵌套查询和嵌套结果。嵌套查询时指通过执行另一条 SQL 映射语句来返回预期的复杂类型;嵌套结果是使用嵌套结果映射来处理重复的联合结果的子集。 例如,以下是使用嵌套...

    mybatis系列三:一对多双向关联

    在MyBatis中,实现一对多关联有两种方式:集合映射和关联映射。集合映射通常用于一个实体包含一个列表或集合的子实体,而关联映射则允许更复杂的导航结构。在这个系列的第三部分,我们将重点讨论双向关联,这意味着...

    Mybatis实现一对一,一对多数据插入数据实验报告.docx

    - 实现一对多查询:类似一对一查询,但在`User`类中,通过`List&lt;Order&gt;`集合获取所有关联的订单。 5. **Mybatis映射文件中的`resultMap`使用** - `resultMap`标签用于定义复杂的结果映射,它可以处理一对一、一对...

    Mybatis关联映射Demo

    - `UserMapper.xml`:用户相关的映射文件,可能包含了与订单的一对多关联映射。 - `OrderMapper.xml`:订单相关的映射文件,可能包含了与商品的一对多关联映射。 - `ProductMapper.xml`:商品相关的映射文件,可能...

Global site tag (gtag.js) - Google Analytics