关于MyBatis多对多关联查询只查出一条数据
在MyBatyis中经常需要在多表之间进行关联,在其它配置都正确没有问题的情况下,控制台输出查询记录的时候可能会只出现了一条数据。笔者最近在进行查询时就出现了这一问题,只输出了一条记录,将sql语句放到MySQL执行确没有问题,以下是部分代码和xml配置:
部分表的sql语句
stu表的属性为:sno,sname,ssex,snative,mno
create table stu
(
sno char(9) primary key,
sname varchar(30) not null,
ssex char(2) not null,
snative varchar(30),
mno int
)ENGINE=InnoDB DEFAULT CHARSET=gbk;
sc表的属性为:sno,cno,tno,participation,final,total
create table sc
(
sno char(9),
cno int,
tno int,
participation float,
final float,
total float,
constraint fk_sc_stu foreign key(sno) references stu(sno),
constraint fk_sc_course foreign key(cno) references course(cno),
constraint fk_sc_teacher foreign key(tno) references teacher(tno),
constraint pk_sc primary key(sno,cno,tno)
)ENGINE=InnoDB DEFAULT CHARSET=gbk;
Java类的属性和表字段保持一致:
//省略了getter、setter和重写的toString()方法
Student类,对应stu表
package com.po;
import java.util.List;
public class Student {
private String sno;
private String sname;
private String ssex;
private String snative;
private int mno;
private List<Score> scoreList;//用来存放从sc表中查询的结果。
}
//Score类,对应SC表
package com.po;
import java.util.List;
public class Score {
private String sno;
private int cno;