好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

多表联合查询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_car t_car_driver t_car_cardriver

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

查看更多关于MyBatis实现多表联合查询resultType的返回值的详细内容...

  阅读:45次