mybatis如何封裝List<String>類型屬性
數據庫
有一個班級表

然后還有一個學生表


需要封裝成的對象
/*
*@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>
打印結果

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>

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

但是結果是一樣的
AClassAndStudent(classId=1, className=3班, stuNames=[張三, 李四, 王二, 趙六])
第三種寫法
修改封裝方式
新建一個學生類
/*
*@author huanghaitao
*@description
*@Date 2022/1/27
*/
@Data
public class AStudent {
private Integer id;
private Integer classId;
private String name;
}
一個班級類,這個班級類包含學生類
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>

打印的結果

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=趙六)])
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
springboot自定義starter啟動器的具體使用實踐
本文主要介紹了springboot自定義starter啟動器的具體使用實踐,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09
了解spring中的CloudNetflix Hystrix彈性客戶端
這篇文章主要介紹了了解spring中的CloudNetflix Hystrix彈性客戶端,客戶端彈性模式是在遠程服務發(fā)生錯誤或表現不佳時保護遠程資源(另一個微服務調用或者數據庫查詢)免于崩潰。,需要的朋友可以參考下2019-06-06
Maven中Junit測試@Test等注解無法識別的問題及解決
這篇文章主要介紹了Maven中Junit測試@Test等注解無法識別的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11

