zoukankan      html  css  js  c++  java
  • Mybatis的关联查询映射

    1. 介绍:关联查询字面意思上就是多表之间的查询,单表操作是最简单的,多表操作才是业务所需要的,那么查出来的字段怎么封装呢?

    2. mybatis在这方面提供了很大的便利,通过三个标签便可以完成,resultMap、collection和association便是今天的猪脚

      先对这几个标签做一下介绍

      2.1 resultMap :

        id —— 我们调用的标识

        type —— 映射的类

      2.2 collection :(resultMap中包含的集合字段,一对多)

        column —— 数据库的字段

        ofType —— 映射的类

        property —— 映射的字段

        select —— 我们调用的mapper方法

      2.3 association : (resultMap中包含的单条对应数据,一对一)

        column —— 数据库的字段

        javaType —— 映射的类

        property —— 映射的字段

        select —— 我们调用的mapper方法

      在很久很久以前我们通常这样来进行关联查询映射,

    <resultMap id="AllottedItemDTO" type="com.**.AllottedItemDTO">
        <id column="allottedHeaderId" property="allottedHeaderId"/>
        <collection property="allottedBoxItemDTOList" column="allottedHeaderId" ofType="com.**.AllottedBoxItemDTO" select="getAllottedBoxItem"/>
    </resultMap>

      调用collection和assocaition时,我们需要传入column这个参数,而这个参数我们必须在resultMap中,用id或者property标签显示,

      其余字段mybatis会自动判断进行映射。接下来说一下另一种解决方案。

    3. 上文中我们可能需要使用多条sql才可以完成相关映射,这次用一条语句来就查出关联数据。

      补充一下

      association : (如果多个类后缀相同,前缀不同,可以提取出一个合适的resultMap)

        resultMap —— 调用一个通用的结果集映射

        columnPrefix —— resultMap中column映射会添加前缀

      #下面的例子没有测试,但是大致是这样写的

    select 
        a.id,a.name,a.sex,a.c_id,
        b.b_id,b.b_name,b.b_sex,
        c.c_id,c.c_name,c.c_sex 
    from a 
        left join b on a.id = b.a_id 
        inner join c on a.c_id = c.a_id 
    where a.id = #{id}
    
    <resultMap id="a" type="A">
        <id column="id" property="id"/>
        <result column="c_id" property="cId"/>
        ...
        <collection column="b" ofType="B">
        ...
        </collection>
        <association column="c" javaType="C">
        ...
        </association>
    </resultMap>

      mybatis会自动封装成我们想要的数据

  • 相关阅读:
    知多少进程?
    提高.NET应用性能
    战术设计DDD
    win7下exe文件设置为开机启动
    CQRS项目
    DDD总览
    ML.Net Model Builder
    MySQL主主复制搭建教程收集(待实践)
    MySQL主从复制搭建教程收集(待实践)
    MySQL集群方案收集
  • 原文地址:https://www.cnblogs.com/kongkongFabian/p/9522318.html
Copyright © 2011-2022 走看看