前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mybatis查询返回一个对象中带有集合

mybatis查询返回一个对象中带有集合

作者头像
星辰sea
发布2022-10-29 09:31:09
1.6K0
发布2022-10-29 09:31:09
举报
文章被收录于专栏:星辰SEA星辰SEA

1.首先创建两个测试类

代码语言:javascript
复制
@Data
@TableName("z_test_grade")
public class ZTestGradeEntity implements Serializable {

    private Integer id;

    private String name;

    private String address;
}
代码语言:javascript
复制
@Data
@TableName("z_test_teacher")
public class ZTestTeacherEntity implements Serializable {
    @TableId(type = IdType.AUTO)
    private Integer id;

    private String name;

    private Integer age;

    private String categroy;

    private String level;

    private Integer gradeldId; //关联主表id
}

2.创建返回类Dto 用来接收查询出来的结果

代码语言:javascript
复制
@Data
public class ResultDto {
    private Integer id;

    private String name;

    private String address;

    private List<ZTestTeacherEntity> teacherList;
}

3.重点:然后配置xml

代码语言:javascript
复制
//<-- 关联集合就是用collection-->
<resultMap id="gradeMap" type="com.personal.modules.test.ResultDto">
        <id column="id" property="id" />
        <result column="name" property="name"/>
        <result column="address" property="address"/>
        <collection property="teacherList" ofType="com.personal.modules.test.ZTestTeacherEntity">
            <id property="id" column="t_id" />
            <result column="t_name" property="name"/>
            <result column="t_age" property="age"/>
            <result column="t_categroy" property="categroy"/>
            <result column="t_level" property="level"/>
            <result column="t_gradeldId" property="gradeldId"/>
        </collection>
    </resultMap>

常用的属性就不说了,特别要注意的是ofType这个要指向各自表的实体类,然后子表的column属性不要主表重名,一旦重名就会出问题,不知道是不是我配置的问题,希望有大佬指教,反正不重名就可以 接下来就是查询语句了,很简单,只要别名和上面resultMap对的上就ok

4.SQL

代码语言:javascript
复制
//SQL:
<select id="test" resultMap="gradeMap">
        SELECT
               ztg.id,
               ztg.name,
               ztg.address,
               ztt.id as t_id,
               ztt.name as t_name,
               ztt.age as t_age,
               ztt.categroy as t_categroy,
               ztt.level as t_level,
               ztt.gradeld_id as t_gradeldId
        FROM
            z_test_grade ztg
                LEFT JOIN z_test_teacher ztt ON ztt.gradeld_id = ztg.id

    </select>

5.返回结果数据

代码语言:javascript
复制
{
    "code":200,
    "data":[
        {
            "id":1,
            "name":"3年一班",
            "address":"1楼",
            "teacherList":[
                {
                    "id":1,
                    "name":"宋元桥",
                    "age":50,
                    "categroy":"武当",
                    "level":"1",
                    "gradeldId":1
                },
                {
                    "id":2,
                    "name":"俞莲舟",
                    "age":43,
                    "categroy":"武当",
                    "level":"1",
                    "gradeldId":1
                }
            ]
        },
        {
            "id":2,
            "name":"3年二班",
            "address":"2楼",
            "teacherList":[
                {
                    "id":3,
                    "name":"张三",
                    "age":55,
                    "categroy":"武当",
                    "level":"1",
                    "gradeldId":2
                }
            ]
        }
    ]
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-12-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.首先创建两个测试类
  • 2.创建返回类Dto 用来接收查询出来的结果
  • 3.重点:然后配置xml
  • 4.SQL
  • 5.返回结果数据
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档