java
主页 > 软件编程 > java >

MyBatis实现多表联合查询resultType的返回值

2022-03-10 | 秩名 | 点击:

多表联合查询resultType的返回值

一般数据按参数类型返回

1

2

3

<select id="queryCarIdList" resultType="long">

        select id from t_car_car

</select>

1

2

3

  <select id="queryDept" resultType="string">

        SELECT deptname FROM t_car_run where deptid = #{deptid} GROUP BY deptname

    </select>

根据某字段查询

返回的类型是实体类,因为查询结果数据均为实体类中字段的数据

1

2

3

<select id="queryNumber" resultType="io.renren.modules.generator.entity.TCarRunEntity">

        select number from t_car_car where id = #{carid}

</select>

查询结果为多条记录,存放在list中返回

返回的类型是实体类,因为查询结果数据均为实体类中字段的数据

1

2

3

<select id="queryCar" resultType="io.renren.modules.generator.entity.TCarCarEntity">

        select * from t_car_car

</select>

多表联合查询

t_car_cardriver存放的两个字段分别是t_car_car和t_car_driver的主键id

解决方案

1.resultType的返回类型是java.util.Map

返回得到的是List中存放的所有数据

1

2

3

<select id="queryDriver" resultType="java.util.Map">

        select driverid from t_car_cardriver where carid = #{id}

</select>

2.新建一个实体类

里面存放的是查询结果里需要的字段名

1

2

3

// TCarCarDriver

private Long carid;

private Long driverid;

返回类型为该实体类

1

2

3

<select id="queryDriver" resultType="TCarCarDriver">

        select driverid from t_car_cardriver where carid = #{id}

</select>

多表联查,返回结果嵌套list

多层集合嵌套返回结果用resultMap,collection中再次使用resultMap

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

<resultMap id="chainVo" type="com.suncnpap.intelligentqa.vo.ChainVo">

    <id column="cid" property="id"/>

    <result column="access_key" property="accessKey"/>

    <result column="secret_key" property="secretKey"/>

    <result column="outer_chain_name" property="outerChainName"/>

    <result column="outer_chain_document" property="outerChainDocument"/>

    <collection property="intentionVos" ofType="com.suncnpap.intelligentqa.vo.ChainIntentionVo"

                resultMap="intentionVos"/>

</resultMap>

  

<resultMap id="intentionVos" type="com.suncnpap.intelligentqa.vo.ChainIntentionVo">

    <id column="iid" property="id"/>

    <result column="intention_name" property="intentionName"/>

    <collection property="questionVoList" ofType="com.suncnpap.intelligentqa.vo.MultiQuestionVo">

        <id column="qid" property="id"/>

        <result column="question" property="question"/>

    </collection>

    <collection property="wordVos" ofType="com.suncnpap.intelligentqa.vo.ChainIntentionWordVo">

        <id column="wid" property="id"/>

        <result column="word_slot" property="wordSlot"/>

        <result column="word_slot_miss_question" property="wordSlotMissQuestion"/>

        <result column="entity_type_ids" property="entityTypeIds"/>

    </collection>

</resultMap>

  

<select id="detail" resultMap="chainVo">

    select tc.id   as tid,

           tci.id  as iid,

           tciw.id as wid,

           tmq.id  as qid,

           access_key,

           secret_key,

           outer_chain_name,

           outer_chain_document,

           intention_name,

           question,

           word_slot,

           word_slot_miss_question,

           entity_type_ids

    from t_chain tc

             left join t_chain_intention tci on tc.id = tci.chain_id

             left join t_chain_intention_word tciw on tci.id = tciw.intention_id

             left join t_multi_question tmq on tci.id = tmq.parent_id

    where tc.id = #{id}

      and tc.deleted = 0

</select>

原文链接:https://blog.csdn.net/weixin_44238871/article/details/106282507
相关文章
最新更新