mybatis 返回结果里面嵌套list

Posted 刀马戏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis 返回结果里面嵌套list相关的知识,希望对你有一定的参考价值。

前言:

  之前一直习惯用mybatisPlus,表结构也都比较简单,mybatisPlus对单表的CRUD 比较友好,今年新换了一家公司,业务场景相对复杂,需要跨表跨库查询数据,故,毕业两年,刚开始接触手写sql,话不多说,先介绍今天的主题:很多时候,在查询数据库的时候。经常会出现以下的情况:

 

 我们需要获取到combo_id 所对应的所有的sign_sugject_id,此时,就可以在mybatis的返回结果中嵌套一个list来处理sign_sugject_id。

  具体代码如下:

1. 实体类代码:

 1 public class XXX{
 2 
 3     private Long id;
 4     private String comName;
 5     private int companyType;
 6 
 7     public int getCompanyType() {
 8         return companyType;
 9     }
10 
11     public void setCompanyType(int companyType) {
12         this.companyType = companyType;
13     }
14 
15     public Long getId() {
16         return id;
17     }
18 
19     public void setId(Long id) {
20         this.id = id;
21     }
22 
23     public String getComName() {
24         return comName;
25     }
26 
27     public void setComName(String comName) {
28         this.comName = comName;
29     }
30 }
31 
32 public class YYY{
33 
34     private String title;
35     private List<XXX> signSubject;
36 }

2.mapper.xml 文件

 1   <resultMap id="result" type="YYY">
 2     <result property="name" column="name"/>
 3     <collection property="signSubject" ofType="XXX">
 4       <id property="id" column="id"/>
 5       <result property="comName" column="com_name"/>
 6       <result property="companyType" column="company_type"/>
 7     </collection>
 8   </resultMap>
 9 
10   <select id="test" resultMap="result">
11    select a.name, c.id, c.com_name,b.company_type
12    a
13    left join  b on a.id = b.combo_id
14    left join  c on b.sign_subject_id = c.id
15     where a.id = 109
16    </select>

分析:

注意<collection></collection>标签中的内容,其中的<id>的取值就是我们需要分组的combo_id,<result>标签中的内容,和XXX实体类的参数名一一对应。

 

以上是关于mybatis 返回结果里面嵌套list的主要内容,如果未能解决你的问题,请参考以下文章

mybatis如何调用返回游标形式的结果集存储过程,java层如何把cursor转换为list呢?有代码吗?麻烦贴一下

mybatis使用collection嵌套查询

java中的list嵌套怎么弄的?

mybatis如何转化成map<DATE,list>

mybatis 返回值 list列表 结果集只有一条数据?

Mybatis从入门到精通系列 15——嵌套查询与嵌套结果