mybatis一对多关联查询

一对多关联查询指的是在查询一方对象的时候同时把跟他所关联的多方对象也查询出来,这里以篮球队和篮球运动员为例,一个篮球队关联着多个篮球队员。

创建数据库表

创建球队的表,里面有两个字段:
id:主键
name:球队名称

CREATE TABLE `t_team` (

`id` INT NOT NULL AUTO_INCREMENT,

`name` VARCHAR(45) NULL,

PRIMARY KEY (`id`));

创建球员的表,有三个字段:
id:主键
name:球员姓名
tid:所在球队的主键id

CREATE TABLE `t_player` (

`id` INT NOT NULL AUTO_INCREMENT,

`name` VARCHAR(45) NULL,

`tid` INT NULL,

PRIMARY KEY (`id`));

创建javabean

创建篮球运动员的类Player:

package com.monkey1024.bean;

/** * 篮球队员 */

public class Player {

private int id;

private String name;

public Player(String name) {

this.name = name;

}

public Player() {

}

@Override

public String toString() {

return "Player{" + "id=" + id + ", name='" + name + '\'' + '}';

}

//省略setter和getter

}

创建球队的类Team,这里将球员数据全部放到一个List集合中:

package com.monkey1024.bean;

import java.util.List;

/** * 篮球队 */

public class Team {

private int id;

private String name;

private List<Player> playerList;

@Override public String toString() {

return "Team{" + "id=" + id + ", name='" + name + '\'' + ", playerList=" + playerList + '}'; }

//省略setter和getter

}

需要注意的是若定义的类是双向关联,即双方的属性中均有对方对象作为域属性出现,那么它们在定义各自的 toString()方法时需要注意,只让某一方可以输出另一方即可,不要让双方的 toString()方法均可输出对方。这样会造成栈内存溢出的错误。

创建TeamMapper.xml映射文件:

此时涉及到两张表的操作,即使你的字段名和bean属性名一致也要编写resultMap来进行关联。

上面sql语句中的collection标签可以表示集合类型,其中:

  • property中填写集合在Team这个bean中的属性名称,此时是playerList
  • ofType中填写集合的泛型

在collection标签中填写的内容关联的是Player中的属性。

创建dao

这里创建一个TeamDao的接口,里面添加一个方法:

创建测试类

创建一个测试类用来执行上面的sql语句,注意不要忘了SqlSession和TeamDao对象的获取:

在执行成功后,可以看到查询出的数据只有一个Team对象,在该对象中的list属性里面存放了多个Player对象数据。

 

 

 

 

 

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值