艳辉 發表於 2026-1-10 14:44:20

Mybatis返回结果多重嵌套List方式

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li>Mybatis返回结果多重嵌套List</li><ul class="second_class_ul"><li>我们可以通过resultMap自动映射来实现</li><li>PersonPosGroup</li><li>PersonData</li><li>sql代码</li></ul><li>总结</li><ul class="second_class_ul"></ul></ul></div><p class="maodian"></p><h2>Mybatis返回结果多重嵌套List</h2>
<p><strong>实际开发中,在定义接口的返回格式时往往会遇到返回json多重嵌套的情况:</strong></p>
<p class="maodian"></p><h3>我们可以通过resultMap自动映射来实现</h3>
<div class="jb51code"><pre class="brush:xml;">    &lt;resultMap type="PersonDetailsVo" id="personDetailsMap"&gt;
      &lt;result column="sequence_id" property="sequenceId" /&gt;
      &lt;collection property="personPosGroup" javaType="java.util.List" ofType="com.ruoyi.project.business.main.domain.PersonPosGroup"&gt;
            &lt;result column="camera_id" property="cameraId" /&gt;
            &lt;collection property="personData" javaType="java.util.List" ofType="com.ruoyi.project.business.main.domain.PersonData"&gt;
                &lt;result column="person_id" property="personId" /&gt;
                &lt;result column="position_info" property="positionInfo" /&gt;
                &lt;result column="worker_type" property="workerType" /&gt;
            &lt;/collection &gt;
      &lt;/collection &gt;
    &lt;/resultMap&gt;

</pre></div>
<p>比如这样的resultMap结构就实现了三层嵌套,我们要注意创建PersonPosGroup、PersonData实体类来完成映射。</p>
<p class="maodian"></p><h3>PersonPosGroup</h3>
<div class="jb51code"><pre class="brush:java;">public class PersonPosGroup implements Serializable {

    private String cameraId;
    private List&lt;PersonData&gt; personData;

    public String getCameraId() {
      return cameraId;
    }

    public void setCameraId(String cameraId) {
      this.cameraId = cameraId;
    }

    public List&lt;PersonData&gt; getPersonData() {
      return personData;
    }

    public void setPersonData(List&lt;PersonData&gt; personData) {
      this.personData = personData;
    }
}
</pre></div>
<p class="maodian"></p><h3>PersonData</h3>
<div class="jb51code"><pre class="brush:java;">public class PersonData implements Serializable {

    private String personId;
    private String workerType;
    private JSONObject positionInfo;

    public String getPersonId() {
      return personId;
    }

    public void setPersonId(String personId) {
      this.personId = personId;
    }

    public String getWorkerType() {
      return workerType;
    }

    public void setWorkerType(String workerType) {
      this.workerType = workerType;
    }

    public JSONObject getPositionInfo() {
      return positionInfo;
    }

    public void setPositionInfo(String positionInfo) {
      this.positionInfo = JSONObject.parseObject(positionInfo);
    }
}

</pre></div>
<p class="maodian"></p><h3>sql代码</h3>
<div class="jb51code"><pre class="brush:xml;">&lt;select id="selectPersonInfoBySequenceId" parameterType="java.util.Map" resultMap="personDetailsMap"&gt;
      select
            sequence_id,
            camera_id,
            person_id,
            position_info,
            worker_type
      from video_person_details_info
      where
            1=1
            &lt;if test="video_id != nulland video_id != ''"&gt; and video_id = #{video_id}&lt;/if&gt;
            &lt;if test="start_sequence_id != null"&gt;
            and sequence_id &gt;= #{start_sequence_id} and#{end_sequence_id} &gt; sequence_id
            &lt;/if&gt;
    &lt;/select&gt;
</pre></div>
<p>查询数据会根据层级关系自动映射出查询结果</p>
<p class="maodian"></p><h2>总结</h2>
<p>以上为个人经验,希望能给大家一个参考,也希望大家多多支持琼殿技术社区。</p>
                           
                            <div class="art_xg">
                              <b>您可能感兴趣的文章:</b><ul><li>Java Mybatis foreach嵌套foreach List&lt;list&lt;Object&gt;&gt;问题</li><li>MybatisPlus实现对象嵌套关联查询一对多List集合查询</li><li>mybatis中使用list作为参数方式</li><li>Mybatis传递List集合方式</li><li>SpringBoot+MyBatis进行XML中循环处理List参数的终极指南</li></ul>
                            </div>

                        </div>
                        <!--endmain-->
頁: [1]
查看完整版本: Mybatis返回结果多重嵌套List方式