mybatis如何封裝List<String>類型屬性
數(shù)據(jù)庫
有一個(gè)班級(jí)表

然后還有一個(gè)學(xué)生表


需要封裝成的對(duì)象
/*
*@author huanghaitao
*@description
*@Date 2022/1/27
*/
@Data
public class AClassAndStudent {
private Integer classId;
private String className;
private List<String> stuNames;
}
第一種寫法
封裝ResultMap寫法
<resultMap id="AClassAndStudent" type="com.ruoyi.system.domain.AClassAndStudent">
<result column="class_id" property="classId"/>
<result column="class_name" property="className"/>
<collection property="stuNames" ofType="string">
<constructor>
<arg column="stu_name"/>
</constructor>
</collection>
</resultMap>
sql語句
<select id="testSelectSql" resultMap="AClassAndStudent">
select c.id class_id,
c.name class_name,
s.name stu_name
from class c
left join student s on c.id = s.class_id
where c.id = 1
</select>
打印結(jié)果

AClassAndStudent(classId=1, className=3班, stuNames=[張三, 李四, 王二, 趙六])
第二種寫法
<resultMap id="AClassAndStudent" type="com.ruoyi.system.domain.AClassAndStudent">
<result column="class_id" property="classId"/>
<result column="class_name" property="className"/>
<collection property="stuNames" column="class_id" ofType="string" select="selectStuName"/>
</resultMap>
<select id="testSelectSql" resultMap="AClassAndStudent">
select c.id class_id,
c.name class_name
from class c
where c.id = 1
</select>
<select id="selectStuName" resultType="java.lang.String">
select name stu_name
from Student
where class_id = 1
</select>

上面那個(gè)爆紅 不用管的
sql語句打印 有點(diǎn)區(qū)別

但是結(jié)果是一樣的
AClassAndStudent(classId=1, className=3班, stuNames=[張三, 李四, 王二, 趙六])
第三種寫法
修改封裝方式
新建一個(gè)學(xué)生類
/*
*@author huanghaitao
*@description
*@Date 2022/1/27
*/
@Data
public class AStudent {
private Integer id;
private Integer classId;
private String name;
}
一個(gè)班級(jí)類,這個(gè)班級(jí)類包含學(xué)生類
import java.util.List;
@Data
public class AClassContainStudent {
private Integer id;
private String name;
private List<AStudent> studentList;
}
這樣的話,ResultMap寫法是下面這樣的
<resultMap id="AClassContainStudent" type="com.ruoyi.system.domain.AClassContainStudent">
<id column="class_id" property="id"/>
<result column="class_name" property="name"/>
<collection property="studentList" resultMap="AStudent"/>
</resultMap>
<resultMap id="AStudent" type="com.ruoyi.system.domain.AStudent">
<id column="stu_id" property="id"/>
<result column="class_id" property="classId"/>
<result column="stu_name" property="name"/>
</resultMap>
<select id="testSelectSqlTwo" resultMap="AClassContainStudent">
select c.id class_id,
c.name class_name,
s.id stu_id,
s.name stu_name
from class c
left join student s on c.id = s.class_id
where c.id = 1
</select>

打印的結(jié)果

AClassContainStudent(id=1, name=3班, studentList=[AStudent(id=1,
classId=1, name=張三), AStudent(id=2, classId=1, name=李四),
AStudent(id=3, classId=1, name=王二), AStudent(id=4, classId=1,
name=趙六)])
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Springboot讀取外部配置文件,項(xiàng)目部署時(shí)配置讀取不到問題及解決
這篇文章主要介紹了Springboot讀取外部配置文件,項(xiàng)目部署時(shí)配置讀取不到問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
vue+springboot前后端分離工程跨域問題解決方案解析
這篇文章主要介紹了vue+springboot前后端分離工程跨域問題解決方案解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
SpringBoot實(shí)現(xiàn)QPS監(jiān)控的完整代碼
本文介紹了QPS(每秒查詢率)的概念,并討論了三種監(jiān)控方案:簡易版(AOP攔截器)、專業(yè)版(Micrometer+Prometheus)和豪華版(SpringBootAdmin),每種方案都有詳細(xì)的實(shí)施步驟,文章還介紹了QPS統(tǒng)計(jì)的進(jìn)階技巧,并強(qiáng)調(diào)了監(jiān)控系統(tǒng)的重要性,需要的朋友可以參考下2025-12-12
Spring?Boot?3.3?實(shí)現(xiàn)職責(zé)鏈模式輕松應(yīng)對(duì)電商訂單流程分析
在電商系統(tǒng)中,訂單處理流程包括庫存校驗(yàn)、優(yōu)惠券驗(yàn)證、運(yùn)費(fèi)計(jì)算等多個(gè)步驟,這些步驟具有順序依賴性,為了管理這些業(yè)務(wù)邏輯,職責(zé)鏈模式提供了解決方案,通過鏈?zhǔn)疥P(guān)系將處理邏輯模塊化,實(shí)現(xiàn)解耦和靈活擴(kuò)展,本文將探討如何結(jié)合SpringBoot實(shí)現(xiàn)職責(zé)鏈模式,優(yōu)化電商訂單處理流程2024-10-10

