mybatis封装List<String>类型属性

1、数据库
有一个班级表
在这里插入图片描述
然后还有一个学生表
在这里插入图片描述
在这里插入图片描述
需要封装成的对象

/*
 *@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语句打印 有点区别
在这里插入图片描述
但是结果是一样的

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=赵六)])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值