mybatis如何封装List<String>类型属性

 更新时间:2023年12月06日 09:47:45   作者:hhtSeeTheWorld  
这篇文章主要介绍了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语句打印 有点区别

但是结果是一样的

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启动器的具体使用实践

    本文主要介绍了springboot自定义starter启动器的具体使用实践,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Java数据库连接池技术的入门教程

    Java数据库连接池技术的入门教程

    这篇文章主要给大家介绍了关于Java数据库连接池技术的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Spring 循环依赖之AOP实现详情

    Spring 循环依赖之AOP实现详情

    这篇文章主要介绍了Spring 循环依赖之AOP实现详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的盆友可以参考一下
    2022-07-07
  • java内部类使用总结

    java内部类使用总结

    本文主要介绍了java内部类使用总结。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • JavaFx 中创建计时器的步骤详解

    JavaFx 中创建计时器的步骤详解

    本文介绍了如何在JavaFx中创建计时器,通过创建计时器界面、编写计时器逻辑以及关联计时器按钮,我们可以快速实现一个灵活可靠的计时器组件,本文能够帮助读者在 JavaFx 中成功实现自己的计时器功能,感兴趣的朋友一起看看吧
    2023-11-11
  • 了解spring中的CloudNetflix Hystrix弹性客户端

    了解spring中的CloudNetflix Hystrix弹性客户端

    这篇文章主要介绍了了解spring中的CloudNetflix Hystrix弹性客户端,客户端弹性模式是在远程服务发生错误或表现不佳时保护远程资源(另一个微服务调用或者数据库查询)免于崩溃。,需要的朋友可以参考下
    2019-06-06
  • 详解Java设计模式之桥接模式

    详解Java设计模式之桥接模式

    桥接,顾名思义,就是用来连接两个部分,使得两个部分可以互相通讯。桥接模式将系统的抽象部分与实现部分分离解耦,使他们可以独立的变化。本文通过示例详细介绍了桥接模式的原理与使用,需要的可以参考一下
    2022-10-10
  • Java经典面试题汇总:Spring Boot

    Java经典面试题汇总:Spring Boot

    本篇总结的是Spring-Boot框架相关的面试题,后续会持续更新,希望我的分享可以帮助到正在备战面试的实习生或者已经工作的同行,如果发现错误还望大家多多包涵,不吝赐教,谢谢
    2021-07-07
  • Maven中Junit测试@Test等注解无法识别的问题及解决

    Maven中Junit测试@Test等注解无法识别的问题及解决

    这篇文章主要介绍了Maven中Junit测试@Test等注解无法识别的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • SpringBoot如何使用mica-xss防止Xss攻击

    SpringBoot如何使用mica-xss防止Xss攻击

    这篇文章主要介绍了SpringBoot如何使用mica-xss防止Xss攻击问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01

最新评论