Mybatis返回結(jié)果多重嵌套List方式
Mybatis返回結(jié)果多重嵌套List
實(shí)際開發(fā)中,在定義接口的返回格式時(shí)往往會遇到返回json多重嵌套的情況:
我們可以通過resultMap自動映射來實(shí)現(xiàn)
<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結(jié)構(gòu)就實(shí)現(xiàn)了三層嵌套,我們要注意創(chuàng)建PersonPosGroup、PersonData實(shí)體類來完成映射。
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>
查詢數(shù)據(jù)會根據(jù)層級關(guān)系自動映射出查詢結(jié)果
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java實(shí)現(xiàn)Huffman編碼的示例代碼
Huffman編碼是一種編碼方式,本文主要介紹了Java實(shí)現(xiàn)Huffman編碼的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08
SpringBoot?中使用?Validation?校驗(yàn)參數(shù)的方法詳解
Validation?是用于檢查程序代碼中參數(shù)的有效性的框架,作為?Spring?框架中的一個(gè)參數(shù)校驗(yàn)工具,集成在?spring-context?包中,這篇文章主要介紹了SpringBoot?中使用?Validation?校驗(yàn)參數(shù),需要的朋友可以參考下2022-05-05
SpringBoot2零基礎(chǔ)到精通之異常處理與web原生組件注入
SpringBoot是Spring全家桶的成員之一,基于約定優(yōu)于配置的思想(即有約定默認(rèn)值,在不配置的情況下會使用默認(rèn)值,在配置文件下配置的話會使用配置的值)。SpringBoot是一種整合Spring技術(shù)棧的方式(或者說是框架),同時(shí)也是簡化Spring的一種快速開發(fā)的腳手架2022-03-03
淺談Java開發(fā)架構(gòu)之領(lǐng)域驅(qū)動設(shè)計(jì)DDD落地
DDD(Domain-Driven Design 領(lǐng)域驅(qū)動設(shè)計(jì))是由Eric Evans最先提出,目的是對軟件所涉及到的領(lǐng)域進(jìn)行建模,以應(yīng)對系統(tǒng)規(guī)模過大時(shí)引起的軟件復(fù)雜性的問題2021-06-06
詳解RabbitMQ中延遲隊(duì)列結(jié)合業(yè)務(wù)場景的使用
這篇文章主要介紹了詳解RabbitMQ中延遲隊(duì)列結(jié)合業(yè)務(wù)場景的使用,延遲隊(duì)列中的元素都是帶有時(shí)間屬性的,延遲隊(duì)列就是用來存放需要在指定時(shí)間被處理的元素的隊(duì)列,需要的朋友可以參考下2023-05-05
淺談Java中GuavaCache返回Null的注意事項(xiàng)
Guava在實(shí)際的Java后端項(xiàng)目中應(yīng)用的場景還是比較多的,比如限流,緩存,容器操作之類的,本文主要介紹了GuavaCache返回Null的注意事項(xiàng),感興趣的可以了解一下2021-10-10

