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

 更新时间:2026年01月10日 14:44:20   作者:柿饼zzzz  
文章介绍了在实际开发中处理JSON多重嵌套返回格式的方法,通过定义`resultMap`并创建相应的实体类(如`PersonPosGroup`和`PersonData`)来实现自动映射,SQL查询代码会根据层级关系自动映射出查询结果

Mybatis返回结果多重嵌套List

实际开发中,在定义接口的返回格式时往往会遇到返回json多重嵌套的情况:

我们可以通过resultMap自动映射来实现

    <resultMap type="PersonDetailsVo" id="personDetailsMap">
        <result column="sequence_id" property="sequenceId" />
        <collection property="personPosGroup" javaType="java.util.List" ofType="com.ruoyi.project.business.main.domain.PersonPosGroup">
            <result column="camera_id" property="cameraId" />
            <collection property="personData" javaType="java.util.List" ofType="com.ruoyi.project.business.main.domain.PersonData">
                <result column="person_id" property="personId" />
                <result column="position_info" property="positionInfo" />
                <result column="worker_type" property="workerType" />
            </collection >
        </collection >
    </resultMap>

比如这样的resultMap结构就实现了三层嵌套,我们要注意创建PersonPosGroup、PersonData实体类来完成映射。

PersonPosGroup

public class PersonPosGroup implements Serializable {

    private String cameraId;
    private List<PersonData> personData;

    public String getCameraId() {
        return cameraId;
    }

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

    public List<PersonData> getPersonData() {
        return personData;
    }

    public void setPersonData(List<PersonData> personData) {
        this.personData = personData;
    }
}

PersonData

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);
    }
}

sql代码

<select id="selectPersonInfoBySequenceId" parameterType="java.util.Map" resultMap="personDetailsMap">
        select
            sequence_id,
            camera_id,
            person_id,
            position_info,
            worker_type
        from video_person_details_info
        where
            1=1
            <if test="video_id != null  and video_id != ''"> and video_id = #{video_id}</if>
            <if test="start_sequence_id != null">
              and sequence_id >= #{start_sequence_id} and  #{end_sequence_id} > sequence_id
            </if>
    </select>

查询数据会根据层级关系自动映射出查询结果

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java项目依赖包选择具体实现类示例介绍

    java项目依赖包选择具体实现类示例介绍

    这篇文章主要为大家介绍了java项目依赖包选择具体实现类示例介绍,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • SpringBoot项目获取统一前缀配置及获取非确定名称配置方法

    SpringBoot项目获取统一前缀配置及获取非确定名称配置方法

    在SpringBoot项目中,使用@ConfigurationProperties注解可获取统一前缀的配置,具体做法是创建配置类,使用prefix属性指定配置的前缀,本文给大家介绍SpringBoot项目获取统一前缀配置以及获取非确定名称配置方法,感兴趣的朋友跟随小编一起看看吧
    2024-09-09
  • 使用SpringAop动态获取mapper执行的SQL,并保存SQL到Log表中

    使用SpringAop动态获取mapper执行的SQL,并保存SQL到Log表中

    这篇文章主要介绍了使用SpringAop动态获取mapper执行的SQL,并保存SQL到Log表中问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • J2SE基础之在Eclipse中运行hello world

    J2SE基础之在Eclipse中运行hello world

    本文的内容非常的简单,跟随世界潮流,第一个Java程序输出“Hell World!”。希望大家能够喜欢
    2016-05-05
  • SpringCloud可视化链路追踪系统Zipkin部署过程

    SpringCloud可视化链路追踪系统Zipkin部署过程

    这篇文章主要介绍了SpringCloud可视化链路追踪系统Zipkin部署过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • java使用GUI实现贪吃蛇游戏

    java使用GUI实现贪吃蛇游戏

    这篇文章主要为大家详细介绍了java使用GUI实现贪吃蛇游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • idea项目的左侧目录没了如何设置

    idea项目的左侧目录没了如何设置

    这篇文章主要介绍了idea项目的左侧目录没了如何设置的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Spring Boot 日志级别、持久化与 SLF4J 配置详细攻略

    Spring Boot 日志级别、持久化与 SLF4J 配置详细攻略

    本文简要介绍了Spring Boot项目中的日志系统,包括日志的定义、作用、使用方法、级别分类、配置以及日志持久化的重要性,通过示例和代码,解释了如何使用日志进行问题排查、行为审计、状态监控,并展示了如何配置日志级别和持久化路径,感兴趣的朋友跟随小编一起看看吧
    2025-11-11
  • Java中操作Xml使用方法备忘录(Hutool工具类XmlUtil、XStream)

    Java中操作Xml使用方法备忘录(Hutool工具类XmlUtil、XStream)

    这篇文章主要给大家介绍了关于Java中操作Xml使用方法(Hutool工具类XmlUtil、XStream)的相关资料,XMLUtil是一个工具类,主要用于读取XML配置文件并提供相应的操作方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • Spring实现资源的动态加载和卸载的方法小结

    Spring实现资源的动态加载和卸载的方法小结

    这篇文章主要介绍了Spring实现资源的动态加载和卸载的方法小结,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-06-06

最新评论