mybatis主子表嵌套查询,返回一个对象带有集合属性

本文记录了在工作中使用MyBatis进行一对多关联查询时遇到的问题及解决方法。首先创建主表和两个子表的实体类,通过grade_id关联。接着,定义一个DTO接收查询结果。在mapper.xml中配置resultMap,注意ofType属性指定实体类,避免column属性与主表字段冲突。查询语句使用别名匹配resultMap,最终展示查询结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前段时间在工作中遇到需要一对多关联查询的情况,百度了好久遇到各种坑,所以在此记录一下,话不多说直接开始

首先,先建几个测试类,主子表通过grade_id关联,具体属性注释我就省略不写了,大家能看懂

  • 主表
	@Data
	@TableName("grade")
	public class Grade implements Serializable {
	    private Long id;
	    private String name;
	    private String address;
		}
  • 子表1
    @Data
    @TableName("teacher")
    public class Teacher implements Serializable {
        private Long id;
        private String name;
        private Integer age;
        private String categroy;
        private Integer level;
        private Long gradeId;		// 关联主表id
    	}
    
  • 子表2
    @Data
    @TableName("student")
    public class Student implements Serializable {
        private Long id;
        private String name;
        private Integer age;
        private String address;
        private Long gradeId;		// 关联主表id
    }
    
  • 表结构和实体类一样我就不放了,没啥特别的

其次,创建一个DTO用来接收查询出来的结果,这个大家都懂,不解释

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值