关于MyBatis 查询数据时属性中多对一的问题(多条数据对应一条数据)
数据准备
数据表
CREATETABLE`teacher`( idINT(10)NOTNULL, `name`VARCHAR(30)DEFAULTNULL, PRIMARYKEY(id) )ENGINE=INNODBDEFAULTCHARSET=utf8; INSERTINTO`teacher`(id,`name`)VALUES(1,'大师'); CREATETABLE`student`( idINT(10)NOTNULL, `name`VARCHAR(30)DEFAULTNULL, `tid`INT(10)DEFAULTNULL, PRIMARYKEY(id), KEY`fktid`(`tid`), CONSTRAINT`fktid`FOREIGNKEY(`tid`)REFERENCES`teacher`(`id`) )ENGINE=INNODBDEFAULTCHARSET=utf8; INSERTINTOstudent(`id`,`name`,`tid`)VALUES(1,'小明',1); INSERTINTOstudent(`id`,`name`,`tid`)VALUES(2,'小红',1); INSERTINTOstudent(`id`,`name`,`tid`)VALUES(3,'小张',1); INSERTINTOstudent(`id`,`name`,`tid`)VALUES(4,'小李',1); INSERTINTOstudent(`id`,`name`,`tid`)VALUES(5,'小王',1);
Teacher类
publicclassTeacher{ privateintid; privateStringname; }
Student类
publicclassStudent{ privateintid; privateStringname; privateTeacherteacher; }
查询接口
publicinterfaceStudentMapper{ //查询嵌套处理-子查询 ListgetStudentList(); //结果嵌套处理 List getStudentResult(); }
查询嵌套处理(子查询)
思路:先查询出所有学生的数据,再根据学生中关联老师的字段tid用一个子查询去查询老师的数据
association:处理对象
property:实体类中属性字段
column:查询结果中需要传递给子查询的字段
javaType:指定实体类
select:子查询SQL
select*fromstudent select*fromteacherwhereid=#{id}
结果嵌套处理
思路:先把所有的信息一次性查询处理,然后配置字段对应的实体类,使用association配置
association:处理对象
property:实体类中属性字段
javaType:指定实体类
SELECTs.idsid,s.namesname,t.nametnameFROMstudents,teachertWHEREs.tid=t.id
到此这篇关于MyBatis查询数据时属性中多对一的问题(多条数据对应一条数据)的文章就介绍到这了,更多相关MyBatis查询数据内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!