mybatis一对多关联 创建_mybatis一对多关系的关联查询

本文介绍了在Java中使用MyBatis进行数据库表关联查询的三种方法:1) 在Mapper接口中直接用注解写SQL;2) 使用ResultMap手动映射,创建Student类中包含Clazz对象的字段;3) 利用resultType自动映射,注意别名的使用。此外,还提到了N+1查询问题以及在业务层处理查询逻辑的方法。
摘要由CSDN通过智能技术生成

问题描述:实现两张表的关联查询

学生表:

班级表:

要实现学生管理信息中有所在班级的名称,即如下图所示

1.对应学生表的pojo类写全班级表中的字段(适用于要连接的表字段较少的情况)

sql语句直接在mapper接口里用注解的方式写就可以了,一目了然

2.使用resultmap手动关联映射

student的pojo类写一个Clazz类型的字段,封装班级信息

然后用xml的方式写sql语句,在写sql语句之前我们要在配置文件里声明xml的路径,以及为了方便,为pojo类起别名

selects.id sid,s.name,s.phone,c.id cid,c.title titlefrom student s left join clazz c on s.clazz_id=c.id

associattion 是关系,代表一个学生对象中包含有一个班级对象,javaType 属性表示当前对象

3.使用resultType自动映射配合别名实现

这种方式是最简易的,但是要注意别名因为包含特殊符号,我们需要加上引号

效果图

另外还有N+1方式,那样是写两条sql语句,resultMap中关联(association)另外一个对象的语句

还有在业务层中处理逻辑,即先用一条sql语句

select * from student

查询出学生集合,通过学生的班级Id去调用

select * from clazz where id=#{id}

查询出对应的班级信息,再遍历学生集合封装到student对象中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值